setPrimaryItem () для FragmentPagerAdapter не вызывается после возврата к активности из фона - PullRequest
1 голос
/ 23 апреля 2019

Когда я запустил свое приложение, при первом вызове setPrimaryItem() я добавил новый фрагмент к активности хоста. Этот фрагмент получил набор данных из текущего фрагмента на viewpager. Я добавил его внутрь setPrimaryItem(), потому что я хотел убедиться, что фрагмент добавления будет создан после создания фрагментов окна просмотра.

 @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 и фрагменты были созданы снова. Я не видел действия, так как мои фрагменты были уничтожены, так как я свернул свое приложение, только 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, были нулевыми, поскольку lastFragment был нулевым.

1 Ответ

0 голосов
/ 23 апреля 2019

Возможно, вы захотите посмотреть на onSaveInstanceState приятель. Кроме того, кроме этого, вы все равно можете использовать при возобновлении и на паузе, если вам нравятся эти больше.

...