In brief i have such construction:
class AlbumPickerFragment extends PageFragment {
...
@Override
public void onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mCallback.onViewCreated(this);
}
}
public class PlaylistPickerActivity extends BaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
...
FragmentCreatedCallback callback = new FragmentCreatedCallback();
if (savedInstanceState == null) {
mFragments.add(PageFragment.newInstance(PageFragment.ALBUM_FRAGMENT_TYPE, callback));
mAdapter = new PagerAdapter(getSupportFragmentManager(), mFragments);
mPager.setAdapter(mAdapter);
} else {
restoring = true;
}
}
Callback extends ICallback {
public void onViewCreated(final Fragment fragment) {
mFragments.add(fragment);
mAdapter = new PagerAdapter(getSupportFragmentManager(), mFragments);
mPager.setAdapter(mAdapter);
}
}
I got illegal state exception
: recursive entry to executePendingTransaction. I know how to fix it, but i am just curious why does this happen. In my opinion it's something like this:
- In activity's onCreate i created fragment and passed it to pager's adapter.
FragmentManager calls fragment's onCreateView
I called onViewCreated and passed my fragment to pager's adapter again AND i suppose there it goes to step 2 again.