2014-10-08 2 views
0

Я использовал View пейджер для отображения скользящих изображений в моем приложении. Код работает просто отлично, но когда пользователь переходит к другим фрагментам, а когда возвращается обратно к предыдущему фрагменту, изображения не отображаются. Изображения в представлении пейджер отображаются только при запуске приложения, иначе он не будет виден.Просмотр пейджера, отображающего изображение только один раз

Код

public class HomeScreen extends BaseFragment { 

    ViewPager viewPager; 
    Fragment fragment; 
    private int[] images = {R.drawable.ic_launcher, R.drawable.nav_bg}; 
    private FragmentManager fragmentManager; 
    private Timer swipeTimer; 

    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     view = inflater.inflate(R.layout.home_screen, container, false); 
     return view; 
    } 

    @Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 
     viewPager = (ViewPager) getActivity().findViewById(R.id.viewPager); 
     fragmentManager = getFragmentManager(); 
     viewPager.setAdapter(new pagerAdapter(fragmentManager, images)); 
     final Handler handler = new Handler(); 
     final Runnable update = new Runnable() { 
      @Override 
      public void run() { 
       for (int i = 0; i < images.length; i++) { 
        viewPager.setCurrentItem(i); 
       } 
      } 
     }; 
     swipeTimer = new Timer(); 
     swipeTimer.schedule(new TimerTask() { 
      @Override 
      public void run() { 
       handler.post(update); 
      } 
     }, 1000, 5000); 

    } 


    public class pagerAdapter extends FragmentStatePagerAdapter { 

     private int[] images; 


     public pagerAdapter(FragmentManager fm, int[] images) { 
      super(fm); 
      this.images = images; 

     } 

     @Override 
     public Fragment getItem(int i) { 
      fragment = ImageSwitcher.newInstance(images[i]); 
      return fragment; 
     } 

     @Override 
     public int getCount() { 
      return images.length; 
     } 
    } 

} 

Фрагмент кода

public class ImageSwitcher extends BaseFragment { 

    private ImageView imageView; 


    public static final ImageSwitcher newInstance(int image) { 
     ImageSwitcher imageSwitcher = new ImageSwitcher(); 
     Bundle bundle = new Bundle(); 
     bundle.putInt("image", image); 
     imageSwitcher.setArguments(bundle); 
     return imageSwitcher; 
    } 

    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     view = inflater.inflate(R.layout.image_switcher_fragment, container, false); 
     return view; 
    } 

    @Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 
     initialize(); 
    } 

    private void initialize() { 
     imageView = (ImageView) view.findViewById(R.id.image_switcher); 
     imageView.setBackgroundResource(getArguments().getInt("image")); 
    } 
} 
+0

вызов 'инициализации()' в 'onCreateView' после инициализации 'view'. – mmlooloo

+0

напишите код, чтобы я мог отметить его – user3917131

ответ

0

Изменить

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
{ 
     view = inflater.inflate(R.layout.image_switcher_fragment, container, false); 
     return view; 
} 

в

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    view = inflater.inflate(R.layout.image_switcher_fragment, container, false); 
    initialize(); 
    return view; 
} 
Смежные вопросы