1

When I launched my app, at the first time setPrimaryItem() was called, I added a new fragment to the host activity. This fragment got the data set from the current fragment on viewpager. I added it inside setPrimaryItem() because I wanted to make sure the addition fragment would be created after creating viewpager fragments.

 @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);
            }

This is what happened when I run my app:

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();

After I minimized my app to the background and opened some other apps. I went back to the app, HostActivity and fragments were created again. I didn't see the activity as well as my fragments were destroyed since I minimized my app, only onStopped() was called.

This is what happened:

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

As you can see, AdditionFragment was created at the beginning even though setPrimaryItem() was not called. The data AdditionFragment tried to get from a ViewPager fragment was null since latestFragment was null.

Hai Hack
  • 948
  • 13
  • 24

1 Answers1

0

You might want to look into onSaveInstanceState buddy. Also, other than this, you could still use on resume and on pause if you like those more.

Jian Astrero
  • 744
  • 6
  • 19