0

在我的应用程序中,我在 ActionBar 中启用了下拉菜单。用户有两个元素可供选择。根据选择,我希望 ViewPager 显示来自不同 FragmentPagerAdapter 的不同内容。用户必须具有随时切换的能力。

我尝试在侦听器中设置两个不同的 PagerAdapters,但没有成功。寻呼机每次都会重新加载以前的片段。此处此处描述了类似的问题。但是,在我的方法中,我不想更改一个适配器的内容。我真的只想在两个单独的适配器之间切换。

这整件事对我来说似乎真的很混乱。是否有任何已知的解决方法,或者我的问题是否有替代解决方案?

4

2 回答 2

1

如果您的应用程序可能,我建议使用FragmentStatePagerAdapter而不是FragmentPagerAdapter. 每个适配器都应该能够存储单独的片段列表,并且在切换到另一个适配器时应该保持片段的保存状态。

于 2012-10-09T03:03:05.257 回答
0

我尝试在侦听器中设置两个不同的 PagerAdapters,但没有成功。寻呼机每次都会重新加载以前的片段。

我假设您正在使用FragmentPagerAdapteror FragmentStatePagerAdapter。两者都通过标签名称将它们的片段存储在 中FragmentManager,因此这种切换方法将不起作用。

是否有任何已知的解决方法,或者我的问题是否有替代解决方案?

一种方法是 fork FragmentPagerAdapteror FragmentStatePagerAdapter,替换该makeFragmentName()方法以使用替代标记语法,并为您的两个之一使用修改后的适配器类。

于 2012-10-09T00:24:32.620 回答