I have an app, with to layouts. In portrait i have one frag on screen, in land - two.
In OnCreate of my Activity:
frameDetailsFragment = (FrameLayout) findViewById(R.id.detailsFragment);
if (frameDetailsFragment != null){
if (EntryPool.getPool(this).getEntries().size() > 0) {
detailsFragment = DetailsFragment.newInstance(EntryPool.getPool(this).getEntries().get(0));
getFragmentManager().beginTransaction()
.add(R.id.detailsFragment, detailsFragment, DETAILS_FRAGMENT)
.commit();
}
}
So when we are in portrait we do not create DetailsFragment. In DetailsFragment there is nothing interesting, no setRetainState, and i do not save activity in onAtach(). I just log out lifecycle methods. So, When i launch app in portarit, it works (Details frag is not created). then i rotate - Details frag is crated. Then I rotate again - and I see this:
04-22 12:06:42.737 2692 2692 I ANT DetailsFragment :: onDestroy
04-22 12:06:42.737 2692 2692 I ANT DetailsFragment :: onDetach
04-22 12:06:42.761 2692 2692 I ANT DetailsFragment :: onAttach
04-22 12:06:42.761 2692 2692 I ANT DetailsFragment :: onCreate
04-22 12:06:42.805 2692 2692 D ANT MainActivity oncretae
04-22 12:06:42.845 2692 2692 I ANT DetailsFragment :: onCreateView
04-22 12:06:42.857 2692 2692 I ANT DetailsFragment :: onActivityCreated
As wee can see, frag recretaed bu fragment manager. WHY? Plese help me, I can not see any logic in this behavior - I did not wrotye setRetainInstanse, nor addToBackState when performing add fragment transaction