我正在使用ViewPager
和FragmentPagerAdapter
来托管四个不同的片段。
我想要实现的是通过点击按钮成功替换Fragment1
一个全新的片段newFragment
。
当我使用..
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction transaction = fragmentManager.beginTransaction();
transaction.replace(R.id.fragment1_layout_id, newfragment);
transaction.remove(fragment1);
transaction.commit();
替换片段并显示Fragment
而不是Fragment1
。虽然只要我一直滑到Fragment4
然后再回到newFragment
,Fragment1
就会卷土重来。
答案 0 :(得分:0)
您的片段由FragmentPagerAdapter
提供。
您需要调整FragmentPagerAdapter
为Fragment1创建的片段,然后在适配器上调用notifyDataSetChanged()
。
使用您的方法,应该再次显示Fragment1的时间,ViewPager
只会让您的FragmentPagerAdapter
重新创建特定的实例 - 这将返回您尝试替换的实例
只要在适配器上没有调用ViewPager
,notifyDataSetChanged()
就不能在内部缓存片段。因此,如果没有这个电话,你可能无法获得机会。