2017-03-27 32 views
0

我正在創建一個需要用戶在Main_Activity.xml中輸入姓名,電子郵件,日期等的應用程序。然後,用戶將點擊提交。輸入的數據將顯示在confirm.xml中。在confirm.xml中,用戶需要驗證輸入的數據,如果想編輯輸入的數據,他們將點擊返回按鈕重新編輯數據。我試圖做到這一點,但一旦我點擊後退按鈕,我在editText字段中輸入的所有數據都消失了。我想保留在MainActivity.xml的editText字段中輸入的數據,所以我只能更改需要編輯的某些字段。我怎樣才能做到這一點?謝謝。如何在edittext字段中輸入文字?

+0

讓我看看您的代碼 –

+0

您是否清除數據? –

+0

不要在mainactivity中使用類似'finish()'的關鍵字 –

回答

0

您可以覆蓋onSaveInstanceState(Bundle savedInstanceState)函數,並使用savedInstanceState保存在onCreate(Bundle instanceState)onRestoreInstanceState(Bundle instanceState)期間想要取回的各種數據。

@Override 
public void onSaveInstanceState(Bundle savedInstanceState) { 
    super.onSaveInstanceState(savedInstanceState); 
    savedInstanceState.putString("TextFieldX", "Data To Retrieve"); 
} 

而且把它找回來:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onRestoreInstanceState(savedInstanceState); 
    //get back value 
    String value = savedInstanceState.getString("TextFieldX"); 
} 

https://developer.android.com/reference/android/os/Bundle.html

爲您的數據的壽命更長持久性,你把它寫入SQLite

+0

謝謝你的建議。我會試一試。 – jdk

0

當您輸入數據的活動被破壞時,可能會發生這種情況。你如何打開新的確認活動?這是可能包含錯誤的代碼的一部分。

如果您在打開新的活動時致電finish(),那麼活動將被銷燬並且數據保留在EditText中。

要打開一個新的活動並保留當前數據,您只需撥打startActivity(...)而不需要finish()

Intent intent = new Intent(context, ConfirmationActivity.class); 
startActivity(intent); 

無論如何,活動可以通過android來銷燬,以在需要時釋放內存。當您打開另一個需要內存但應用程序使用內存的應用程序時,會發生這種情況,因此係統會破壞您的活動,並且由您使用Bundles並將其恢復並保存在磁盤上。

我建議你閱讀本指南https://developer.android.com/guide/components/activities/activity-lifecycle.html

+0

謝謝你的建議。我會試一試。 – jdk

0

您可以保存所有信息以字符串的像私人字符串名稱;

if(name != null && !name.toString().isEmpty()) { 
set name String on your editText widget. 
} 
0

您可以使用共享偏好的對象保存在用戶的手機的EditText值的值: 寫入/當用戶輸入的名稱,並再次使用它像如下設置此名稱。代碼執行第二次時,您只需檢查共享首選項中的變量。如果變量不爲空,則從中獲取值並使用setText()方法設置該字符串。