簡體   English   中英

如何將輸入的文本保留在edittext字段中?

[英]How to keep entered text in edittext field?

我正在創建一個需要用戶在Main_Activity.xml中輸入名稱,電子郵件,日期等的應用程序。 然后,用戶將單擊提交。 輸入的數據將顯示在confirm.xml中。 在confirm.xml中,用戶需要驗證輸入的數據,如果要編輯輸入的數據,他們將單擊“后退”按鈕再次編輯數據。 我嘗試這樣做,但是一旦單擊后退按鈕,我在editText字段中輸入的所有數據就會消失。 我想將輸入的數據保留在MainActivity.xml的editText字段中,因此我只能更改一些需要編輯的字段。 我怎樣才能做到這一點? 謝謝。

您可以覆蓋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

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

如果在打開新活動時調用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

您可以將所有信息保存到String中,就像私有String Name一樣; 當用戶輸入名稱時寫入/設置此名稱,然后再次使用它,如下所示:

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

您可以使用共享首選項對象將edittext值保存在用戶電話中。 當代碼第二次執行時,您只需檢查共享首選項中的變量。 如果variable不為null,則從中獲取值並使用setText()方法設置該字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM