【问题标题】:setPrimaryItem() on FragmentPagerAdapter isn't called after going back to activity from background从后台返回活动后,不调用 FragmentPagerAdapter 上的 setPrimaryItem()
【发布时间】:2019-04-23 02:02:57
【问题描述】:

当我启动我的应用程序时,在第一次调用 setPrimaryItem() 时,我向宿主活动添加了一个新片段。该片段从 viewpager 上的当前片段中获取数据集。我将其添加到 setPrimaryItem() 中,因为我想确保在创建 viewpager 片段后会创建添加片段。

 @Override
            public void setPrimaryItem(ViewGroup container, int position, Object object) {
                if (latestFragment == null) {
                    latestFragment = (ViewPagerFragment) object;
                    addAdditionFragment();
                }

                    latestFragment = (ViewPagerFragment) object;
                super.setPrimaryItem(container, position, object);
            }

这是我运行应用程序时发生的情况:

HostActivity.setPrimaryItem();
ViewPagerFragment.onAttach();
ViewPagerFragment.onCreate();
ViewPagerFragment.onCreateView();
ViewPagerFragment.onActivityCreated();
ViewPagerFragment.onStart();
ViewPagerFragment.onResume();
AdditionFragment.onAttach();
AdditionFragment.onCreate();
AdditionFragment.onCreateView();
AdditionFragment.onActivityCreated();
AdditionFragment.onStart();
AdditionFragment.onResume();

在我将我的应用最小化到后台并打开其他一些应用之后。我回到应用程序,再次创建了 HostActivity 和 Fragments。自从我最小化我的应用程序以来,我没有看到活动以及我的片段被破坏,只调用了onStopped()

事情是这样的:

ViewPagerFragment.onAttach();
ViewPagerFragment.onCreate();
AdditionFragment.onAttach();
AdditionFragment.onCreate();
ViewPagerFragment.onCreateView();
ViewPagerFragment.onActivityCreated();
AdditionFragment.onCreateView();
AdditionFragment.onActivityCreated();
ViewPagerFragment.onStart();
ViewPagerFragment.onResume();
AdditionFragment.onStart();
AdditionFragment.onResume();

如您所见,AdditionFragment 是在开始时创建的,即使 setPrimaryItem() 没有被调用。 AdditionFragment 尝试从 ViewPager 片段获取的数据为 null,因为 latestFragment 为 null。

【问题讨论】:

    标签: android android-fragments android-viewpager activity-lifecycle fragment-lifecycle


    【解决方案1】:

    您可能想查看onSaveInstanceState buddy。此外,除此之外,如果您更喜欢这些,您仍然可以在恢复和暂停时使用。

    【讨论】:

      猜你喜欢
      • 2012-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-09
      相关资源
      最近更新 更多