android - Maintain state between activities -


my app has 2 activities: masteractivity , detailactivity. masteractivity has 2 visualization modes: list mode , map mode. action bar item toggles between them.

i'd mantain selected visualization mode when user goes detailactivity , comes back. in beginning used sharedpreferences user previous visualization mode after device boot or long inactivity time, , that's not mean.

then switched bundle , onsaveinstancestate but, when user clicks on button of detailactivity, oncreate's bundle empty can't restore previous visualization mode , reverts list one.

app uses toolbar , androidmanifest.xml configured that:

<activity     android:name=".ui.masteractivity"     android:label="@string/title_activity_master"     android:theme="@style/apptheme.noactionbar">     <intent-filter>         <action android:name="android.intent.action.main" />         <category android:name="android.intent.category.launcher" />     </intent-filter> </activity> <activity     android:name=".ui.detailactivity"     android:parentactivityname=".ui.masteractivity"     android:theme="@style/apptheme.noactionbar">     <meta-data         android:name="android.support.parent_activity"         android:value="it.returntrue.revalue.ui.masteractivity" /> </activity> 

not sure why onsaveinstancestate doesn't work you. code like:

class masteractivity extends activity {     private int mode;      @override     protected void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         if (savedinstancestate != null)             mode = savedinstancestate.getint("mode");     }      @override     protected void onresume() {         super.onresume();          if(mode == 1) {             //list mode         } else {             // map mode         }     }      @override     protected void onsaveinstancestate(bundle outstate) {         super.onsaveinstancestate(outstate);         outstate.putint("mode", mode);     } } 

nevertheless, consider use androjeta framework (maintained me). comes number of features including @retain can use in case:

class masteractivity extends baseactivity {     @retain     int mode;      @override     protected void onresume() {         super.onresume();          if(mode == 1) {             //list mode         } else {             // map mode         }     } } 

note here masteractivity extends baseactivity need create too. please, follow link details.


Comments

Popular posts from this blog

javascript - Laravel datatable invalid JSON response -

java - Exception in thread "main" org.springframework.context.ApplicationContextException: Unable to start embedded container; -

sql server 2008 - My Sql Code Get An Error Of Msg 245, Level 16, State 1, Line 1 Conversion failed when converting the varchar value '8:45 AM' to data type int -