2011-03-09 80 views
0

當我按下「下一步」按鈕時,應用程序中的活動1啓動活動2。在用戶點擊返回後再恢復輸入的數據(ANDROID)

如果用戶點擊在活動2後退按鈕時,應用程序將它們返回到活動1

如果用戶再點擊「下一步」按鈕,應用程序帶來了他們到活動2了,但任何事情,這是輸入活動2現在是空白。有沒有辦法保持活動2中的數據字段完好無損?

回答

0

當您從活動1(A1)到活動2(A2)時,兩者都存儲在堆棧中,並且A2位於頂部。 如果您使用後退按鈕,A2將被彈出並且您再次獲得A1的狀態。照顧一樣。避免使用後退按鈕。

存儲與使用OnResume方法暫時結合的變量。它會幫助你管理激情狀態。

0

如果你開始使用的活動startactivity除非你改變你的launchMode,爲了不使多個實例,你應該設定launchMode您的活動爲singleTasksingleTask它總是會創造新的活動實例,
參考android:launchMode選擇最佳適合您的要求

1

是的,你可以保存數據使用共享首選項它是保存和檢索數據的最佳機制之一。即由用戶輸入。

共享偏好

您可以通過以下機制

SharedPreferences.Editor editor = mySharedPreferences.edit(); 
// Store new primitive types in the shared preferences object. 
editor.putBoolean("isTrue", true); 
editor.putFloat("lastFloat", 1f); 
editor.putInt("wholeNumber", 2); 
editor.putLong("aNumber", 3l); 
editor.putString("textEntryValue", "Not Empty"); 
// Commit the changes. 
editor.commit(); 

以後你可以檢索使用以下方法保存數據

public void loadPreferences() { 
// Get the stored preferences 
int mode = Activity.MODE_PRIVATE; 
SharedPreferences mySharedPreferences = getSharedPreferences(MY_PREFS, mode); 
// Retrieve the saved values. 
boolean isTrue = mySharedPreferences.getBoolean("isTrue", false); 
float lastFloat = mySharedPreferences.getFloat("lastFloat", 0f); 
int wholeNumber = mySharedPreferences.getInt("wholeNumber", 1); 
long aNumber = mySharedPreferences.getLong("aNumber", 0); 
String stringPreference = mySharedPreferences.getString("textEntryValue", ""); 
} 

但上面的代碼應該在正確的活動生活添加循環方法根據您的要求

我.e可以onCreate(),onRestore()等

+0

到目前爲止最佳答案 – dant3 2014-02-23 17:32:51

0

嗯......如果你只關心在返回按鈕上保存視圖狀態,你可以使用首選項(比如在onStop中)作爲Ramesh狀態。但是,沒有理由在每次致onStop時都保存偏好,只有在一次致命一擊中。你可以通過在onResume中設置一個標誌isCalledSavedInstanceState爲false,而不是在onCreate中。然後在onSavedInstanceState中將此標誌設置爲true。然後使用此標誌寫入prefs if!isCalledSavedInstanceState onStop。這裏的邏輯是,onSavedInstanceState不會被強制殺死,如果它在soft kill上被調用,它會在onStop之前被調用。

編輯:如果該活動具有「共享類文件數據」,那麼你應該將狀態保存到onPause()中的數據庫。

JAL

0

取決於你的努力做的,你的代碼,你可以設置你的變量爲static。只是要小心,因爲有這個缺陷