替换viewpager显示的片段内的片段

时间:2012-11-23 10:43:19

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

请先查看线框图像http://i.imgur.com/dPAMA.png

我正在使用ViewPager在FragmentActivity中显示片段。 ViewPager从附加的FragmentPagerAdapter

中获取片段
mViewPager = (ViewPager) findViewById(R.id.view_pager);       
mAdapter = new HomePagerAdapter(getSupportFragmentManager());    
mViewPager.setAdapter(mAdapter);

假设viewpager有3个片段可以显示Fragment1,Fragment2,Fragment3。 在上面的图像中,'显示片段1'是第一片段的标题“Fragment1”。该片段是一个列表片段并显示一个列表。 Fragment2和Fragment3有自己的内容要显示。当用户在屏幕上滑动时,ViewPager将显示下一个片段“Fragment2”。

我想要的是,当点击列表中的项目(由Fragment1显示)时,Fragment1应该被其他一些片段完全替换,比如片段4(这是不同的片段,并且不会被连接的适配器返回)。显示Fragment4时,操作栏应更改其内容。每当用户使用Fragment4和onBackPress或来自ActionBar的动作时,应该再次显示带有列表的Fragment1。同时ViewPager应该在滑动时表现相同,并且将显示下一个片段(在我们的例子中为Fragment2)。

基本上,我希望获得与示例相同的行为:

http://developer.android.com/training/basics/fragments/fragment-ui.html#Replace

在此示例中,ListFragment直接显示在FragmentActivity中。我正在使用ViewPager显示ListFragment。我想要上面示例中的相同功能,但在ViewPager中显示的内部片段。这在Android 4.2发布之前很难实现。这个版本的android使用getChildFragmentManager()支持嵌套片段,所以我看到了一些希望。

我在这方面尝试了很多天,并且还扫描了整个堆栈流程以获得Q&与嵌套片段有关,但没有得到我想要的东西。

那么,这有可能实现吗?如果是,那该怎么办?

1 个答案:

答案 0 :(得分:1)

这是Android 4.2之前的一个大问题,但除了确保后退按钮有效之外,现在使用嵌套片段似乎更容易。我在这里发布了我的问题解决方案:https://stackoverflow.com/a/13925130/467509

我的解决方案可以解答您在更改ActionBar时所提出的所有问题。

相关问题