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

Popular posts from this blog

apache - Remove .php and add trailing slash in url using htaccess not loading css -

inno setup - TLabel or TNewStaticText - change .Font.Style on Focus like Cursor changes with .Cursor -