2015-03-03 50 views
0

在我的應用程序中的每個活動和文件很多onSaveInstanceState,現在在讀this link後創建Parcelable類我不能使用和保存到這個類的Android保存在Parcelable類對象的活動狀態

默認onSaveInstanceState是:

@Override 
public void onSaveInstanceState(Bundle savedInstanceState) { 
    super.onSaveInstanceState(savedInstanceState); 
    savedInstanceState.putBoolean("IsShowingExitDialogs", mIsShowingExitDialogs); 
    savedInstanceState.getInt("LastMenuItemSelected", mLastMenuItemSelected); 
} 

現在我不能使用這個下面一行的IsShowingExitDialogsLastMenuItemSelected保存到Parcable類:

savedInstanceState.putParcelable("IsShowingExitDialogs", mIsShowingExitDialogs); 
savedInstanceState.putParcelable("IsShowingExitDialogs", mLastMenuItemSelected); 
+0

你看到我的答案嗎?你在哪裏與此達成? – 2016-05-07 11:46:22

回答

4

Parcelable接口應用於類。它適用於對象,而在你的情況,你要保存的整數布爾,這兩者都是基本類型。如果你真的想這樣做,你需要將它們包裝在實現Parcelable的類中。然後這將工作。

編輯:

savedInstanceState,你保存onSavedInstanceState()onCreate()返回時Activity被重建,讓您重新使用以前保存的數據。

2.你需要創建一個自定義類MyClass extends Parcelable,實現接口的方法和保存這樣的:

MyClass myClass = new MyClass(mIsShowingExitDialogs, mLastMenuItemSelected); 
savedInstanceState.putParcelable("myClass", myClass); 
+1

你不會在任何地方保存*'savedInstanceState','savedInstanceState'是一個保存你要保存的數據的對象,它可以在'onCreate()'中重新訪問。你需要創建一個類MyClass來保存你想要保存的布爾值和整數,並在這個類上實現Parcelable接口。然後將這個類的一個實例保存在'savedInstanceState'對象中。見編輯的答案 – 2015-03-03 09:32:00