【问题标题】:Is it possible to replace the current viewed fragment in FragmentStatePagerAdapter without swiping to other pages first?是否可以在不先滑动到其他页面的情况下替换 FragmentStatePagerAdapter 中当前查看的片段?
【发布时间】:2014-12-30 06:40:57
【问题描述】:

我已成功替换 FragmentStatePagerAdapter 中的片段,但它需要从片段中滑出才能将其销毁并重新创建不同的片段,从而替换片段。

我需要的是用另一个片段替换适配器当前查看的片段,而不更改当前查看的片段。

例子:

第1页第2页第3页第4页

Page4 是活动片段。当我点击 Page4 中的某些内容时,它将被另一个片段替换

第1页第2页第3页第3页

fragmentDataSource[3] = page3Fragment;
adapter.notifyDataSetChanged();

只有 onChange() 方法才有效。 (胡乱猜测)

这可能吗?我考虑过使用 FrameLayout 并只是设置布局的可见性,但我认为这不是最佳选择。

谢谢!

【问题讨论】:

    标签: android android-fragments carousel fragmentstatepageradapter page-fragments


    【解决方案1】:

    这不是在 ViewPager 中重新实例化 Fragment 的最有效方法,但它是最简单的:

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

    或者在片段中创建一个方法并调用它,如果片段有正确的标签:

    @Override
            public Fragment getItem(int position) {         
                if (position == some position) {
                    YourFragment myFragment = YourFragment.newInstance(someObject);
                    myFragment.setmTag("some tag");
                    return myFragment;
                }
                //some code
    

    }

    @Override
            public int getItemPosition(Object object) {
                YourFragment frag = ((YourFragment) object);
                if (frag.getmTag()!="some tag") {
                    ((YourFragment) object).update(someObject);
    
                }
    
                return super.getItemPosition(object);
            } 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多