我使用動態字段驗證製作登錄表單。我有3個字段的用戶名,電子郵件&密碼&所有這些字段都是必需的。當字段長度= 0,I設置錯誤android:在更改方向上保存錯誤狀態
editText.setError(getText(R.string.cannot_be_blank));
這個代碼工作正常,但是當我改變了方向,所有的錯誤消失 如何保存錯誤狀態?
謝謝。
我使用動態字段驗證製作登錄表單。我有3個字段的用戶名,電子郵件&密碼&所有這些字段都是必需的。當字段長度= 0,I設置錯誤android:在更改方向上保存錯誤狀態
editText.setError(getText(R.string.cannot_be_blank));
這個代碼工作正常,但是當我改變了方向,所有的錯誤消失 如何保存錯誤狀態?
謝謝。
當方向改變時,框架將通過調用onCreate(Bundle savedInstanceState)
重新創建活動。在方向切換之前,如果onSaveInstanceState(Bundle outState)
方法在您的活動中被覆蓋,則該方法將被調用。
您可以將錯誤狀態保存在傳遞給onSaveInstanceState
方法的Bundle中。該捆綁包將作爲savedInstanceState
捆綁包傳遞給您的onCreate()
方法。
因此,你需要重寫onSaveInstanceState
方法在你的活動如下(保存錯誤狀態):
@Override
protected void onSaveInstanceState(Bundle outState) {
outState.putBoolean("errorOccurred", errorState);
super.onSaveInstanceState(outState);
}
然後在您的onCreate
方法檢查,如果savedInstateState
捆綁爲空或不是。基於該文本編輯值的錯誤消息
boolean errorOccurred = false;
if (savedInstanceState != null) {
errorOccurred = savedInstanceState.getBoolean("errorOccurred");
}
當方向改變時,Android框架銷燬活動,然後爲新方向創建一個新方向。所以你所有的狀態都會丟失。
使用SharedPreferences存儲和恢復您的狀態和TextEdit值。
當您打開設備時會發生什麼,您的Activity
將貫穿其整個生命週期,以便處理佈局必須從縱向變爲橫向的事實。
您應該查看有關如何Handle Runtime Changes的開發人員文檔。
它是更好的onResume重新評估,而不是保存狀態......如果沒有,你可以用下面的代碼檢索值出來的 – pzulw