Android Fragment Back Button overlays other fragment and keeps active -
in app have 3 fragments.
app starts [1], user can navigate [2] , optionally [3].
since [3] deep down, want [3] go [1] directly.
currently call [2] using addtobackstack(null). since not call addtobackstack on [3] assumed go [1].
what happens is, [3] returns [1], both fragments displayed overlapping. fragment [3] not call onpause(). calling fragment [2] again display [2] on top of others, not clearing screen.
navigating , forth crash app. on opening new fragment, when hitting button. "fragment added" error (which extremely odd button, check before switching fragments).
any ideas might cause odd behavior? using addtobackstack or [3] eliminates problem, not solve requirement. call super methods appropriate.
info: code sample download @ http://beadsoft.de/android/fragmenttest.zip
same behavior on 2.x, 4.2.2. using actionbarcompat.
code adding fragment:
fragmentmanager fm = getactivity().getsupportfragmentmanager(); fragment fragment = fm.findfragmentbytag(fragment_xyz.frag_tag); if (fragment == null) fragment = fragment_xyz.newinstance(int data); fm.begintransaction().replace(r.id.container, fragment, fragment_xyz.frag_tag) .addtobackstack(null).commit()
there issue on how fragments work. see following life cycle of above app:
lifecycle of app start 04-07 20:34:46.115: d/fragment_1(15309): oncreateview fragment_1 04-07 20:34:46.115: d/fragment_1(15309): onresume fragment_1 click open 2 04-07 20:34:49.148: d/fragment_1(15309): onpause fragment_1 04-07 20:34:49.148: d/fragment_2(15309): oncreateview fragment_2 04-07 20:34:49.148: d/fragment_2(15309): onresume fragment_2 click open 3 04-07 20:34:53.633: d/fragment_2(15309): onpause fragment_2 04-07 20:34:53.633: d/fragment_3(15309): oncreateview fragment_3 04-07 20:34:53.633: d/fragment_3(15309): onresume fragment_3 button. since 3 not on backstack, app returns 1 (not pausing 3) here frag 1 , 3 running , displayed overlaying! 04-07 20:35:03.653: d/fragment_1(15309): oncreateview fragment_1 04-07 20:35:03.653: d/fragment_1(15309): onresume fragment_1 button on 1 - app exit 04-07 20:35:23.474: d/fragment_1(15309): onpause fragment_1 04-07 20:35:23.474: d/fragment_3(15309): onpause fragment_3
issue raised google: https://code.google.com/p/android/issues/detail?id=68160
having , navigating , forth crash app because fragmentmanager pauses , resumes wrong fragments.
Comments
Post a Comment