2013-02-13 77 views
1

我使用ViewPagerFragmentPagerAdapter来承载四个不同的片段。用viewpager替换其他片段

我想实现的目标是成功用Fragment1替代,点击一个按钮。

当我使用..

FragmentManager fragmentManager = getSupportFragmentManager(); 
FragmentTransaction transaction = fragmentManager.beginTransaction(); 
transaction.replace(R.id.fragment1_layout_id, newfragment); 
transaction.remove(fragment1); 
transaction.commit(); 

该片段被替换,Fragment示出,而不是Fragment1。尽管只要我一直刷到Fragment4,然后回到newFragmentFragment1已经卷土重来。

回答

0

您的片段由FragmentPagerAdapter提供。

您需要修改FragmentPagerAdapter为您的Fragment1创建的片段,然后在适配器上调用notifyDataSetChanged()

用你的方法,时间片段1应该再次显示,ViewPager只会要求你的FragmentPagerAdapter重新创建特定的实例 - 这会让你回来你想要替换的实例。

只要notifyDataSetChanged()未在适配器上调用,那么ViewPager就不能在内部缓存片段。因此,如果没有这个呼叫,它可能不会提升你的机会。

+0

感谢您的答复正如我使用'FragmentPageAdapter',我必须明确写'notifyDataSetChanged()'的代码,我应该在哪里写它。 – 2013-02-16 06:00:55