【问题标题】:Need to call onResume for each fragment inside ViewPager需要为 ViewPager 中的每个片段调用 onResume
【发布时间】:2015-08-20 03:55:46
【问题描述】:

我必须快速解决这个问题,因为我必须在两个小时内将我的项目发送给我的教授。

我有一个 fragmentviewpager,一个片段中有 5 个片段。 在每个片段中,我都有一个表格,它使用来自 json 文件和页面位置基础的一些数据进行更新。

我用这个函数在片段容器中获取页面位置,并将它放在静态 int currentPage 中:

mPager.setOnPageChangeListener(new OnPageChangeListener() {

    @Override
    public void onPageSelected(int arg0) 
    {
        currentPage=arg0;
    }

    @Override
    public void onPageScrolled(int arg0, float arg1, int arg2) 
    {


    }

    @Override
    public void onPageScrollStateChanged(int arg0) 
    {


    }
});

在fragmentviewpager中每个片段的onResume里面我用currentPage变量取当前位置。

但是为了做正确的工作,我需要每次通过滑动更改页面时都可以执行 onResume。 我该怎么办?

这是我的fragmentviewpager:

private class ScreenSlidePagerAdapter extends FragmentPagerAdapter 
    {

        // fragments to instantiate in the viewpager
        private List<Fragment> fragments;

        public ScreenSlidePagerAdapter(FragmentManager fm, List<Fragment> fragments) 
        {
            super(fm);
            this.fragments = fragments;
        }

        public void addPage(Fragment page)
        {
            fragments.add(page);
            this.notifyDataSetChanged();
        }

        @Override
        public Fragment getItem(int position) 
        {

            return this.fragments.get(position);
        }

        @Override
        public int getItemPosition(Object object) {
               return POSITION_NONE;
            }

        @Override
        public int getCount() 
        {
            return fragments.size();
        }
    }

我该如何解决我的问题? 提前谢谢你:)

【问题讨论】:

标签: android android-fragments android-viewpager android-fragmentactivity


【解决方案1】:

onResume 在 vi​​ewpager 中不会一直被调用,你可以在片段中创建一个公共方法,你可以根据位置调用它 此链接将对您完全使用 Getting the current Fragment instance in the viewpager

【讨论】:

  • 你的意思是把那个函数放在每个片段中并在 onpageselected 回调中调用?
  • 我以这种方式添加了片段:fragments.add(Fragment.instantiate(getActivity(),CmdPageSlider.class.getName())); Fragment.add(Fragment.instantiate(getActivity(),CmdPageSlider.class.getName())); Fragment.add(Fragment.instantiate(getActivity(),CmdPageSlider.class.getName())); Fragment.add(Fragment.instantiate(getActivity(),CmdPageSlider.class.getName())); Fragment.add(Fragment.instantiate(getActivity(),CmdPageSlider.class.getName()));怎样才能调用正确的接口?
  • 我需要引用当前的fragment来调用接口,但是用什么方式呢?
  • 为什么要使用片段列表
  • 你建议使用什么?
猜你喜欢
  • 2013-12-15
  • 2012-06-06
  • 2016-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多