2014-10-08 56 views
0

我已经使用查看分页器来显示我的应用程序中的滑动图像。代码工作得很好,但是当用户导航到其他分段,并且当返回到前一个分段时,图像不显示。在视图中只有当应用程序启动时才显示,否则它不可见。查看分页显示图像只有一次

代码

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 2014-10-08 12:33:47

+0

请编写代码,以便我可以打勾 – user3917131 2014-10-08 12:59:31

回答

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; 
}