【问题标题】:View pager displaying image only once仅查看一次显示图像的寻呼机
【发布时间】:2014-10-08 10:53:24
【问题描述】:

我使用 View pager 在我的应用程序中显示滑动图像。代码工作得很好,但是当用户导航到其他片段并返回到上一个片段时,图像不会显示。视图分页器中的图像仅应用启动时显示,否则不可见。

代码

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

【问题讨论】:

  • 在初始化onCreateView后调用initialize()view
  • 请写代码让我打勾

标签: android android-fragments android-viewpager


【解决方案1】:

改变

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-30
    • 2016-05-28
    • 2013-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多