android - Fragment 中的 FragmentPagerAdapter

标签 android android-fragments android-viewpager fragmentpageradapter android-nested-fragment

我在实现基于多个 ViewPagers 的设计时遇到了一些麻烦。

在高层次上,我有一个 FragmentActivity,它的内容只有一个 FrameLayout。我有 3 个不同的 fragment 要显示。所有 3 个都是全屏的,一次只能使用 1 个。

fragment 1 是带有一些 TextView 和 ImageView 的基本 fragment 。 Fragment 2 有一个 ViewPager 和一个为其提供几个简单 fragment 的 FragmentPagerAdapter。 Fragment 3 有一个 ViewPager 和一个 FragmentPagerAdapter,可以为它提供几个简单的 fragment (与 Fragment 2 不同)

在我的 FragmentActivity onCreate() 中,我得到 FragmentManager 并开始一个事务,用 Fragment 2 的新实例替换我的 FrameLayout 中的任何内容。

此时一切都按预期工作。我在 Fragment 2 中的 ViewPager 完美运行。

现在我有一个菜单选项,可以用 Fragment 3 的新实例替换我的 FrameLayout 中的 Fragment 2。这也可以正常工作。

当我尝试使用另一个替换事务将 Fragment 2 放回 FrameLayout 时出现问题。我在顶部看到我的 PagerIndicater,但我的页面是空白的。

我试过只创建 Fragment 2 的新实例并调用替换事务。我还尝试在调用替换时在 fragment 上设置标签,并在替换之前添加 findFragmentByTag 检查,而不是创建新实例。在我第二次替换后,两者都给了我相同的空白页结果。

供引用 我的第一个设计只是一个带有 ViewPager 和 ViewIndicater 的 FragmentActivity。我上面的描述中只有 Fragment 2 和 Fragment 3,还有一个可以在它们之间切换的菜单选项。为了进行切换,我定义了 2 个不同的 FragmentPagerAdapter,并调用 ViewPager.setAdapter 来设置选定的 FragmentPagerAdapter。这工作得很好,但现在我需要一个根本不使用 ViewPager 的新的顶级 fragment 。这就是为什么我决定将我的 ViewPagers 移到它们自己的 fragment 中的原因。我的想法是将我的 fragment 交换到 FrameLayout。

我现在面前没有我的代码,所以我不能发布任何代码,但我明天会在我的问题中添加一些代码以帮助促进答案。

最佳答案

这个问题可能与 Navigating back to FragmentPagerAdapter -> fragments are empty 重复.

如果您的应用可以处理它 (API 17),请使用 getChildFragmentManager() .当使用 Fragment 托管您的 ViewPager 并使用 FragmentPagerAdapter 时,似乎会出现此问题。更改为 FragmentStatePagerAdapter 似乎也可以解决问题,但我仍然认为使用 getChildFragmentManager() 是最明智的做法。

关于android - Fragment 中的 FragmentPagerAdapter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12063802/

相关文章:

android - 以编程方式为最低 API 级别 14 更改 EditText 线条颜色和 EditText 光标颜色?

android - 库 com.google.android.gms :play-services-base is being requested by various other libraries at [15. 0.1,15.0.1],但解析为 16.0.1

android - 在 Fragment 中使用 volley 从 JSON 中获取数据

java - PreferenceFragment 与 AppCompatActivity Android

android - 在 Notification Click 上将项目添加到 fragment 内的 recyclerview

Android:如果我使用 SmsManager 发送短信,它会自动重新发送失败的短信吗?

android - 以编程方式获取连接的Powerbank设备信息和Powerbank设备的电池容量

android - 如何使用 Dagger2 将 Activity 注入(inject)到 Fragment 中

android - 将 getActivity 作为 LifecycleOwner 传递给 fragment 中 LiveData 的观察方法的原因是什么?

java - 图像查看器中每个图像的不同文本