簡體   English   中英

Android:在更改方向時保存錯誤狀態

[英]android: save error state on change orientation

我用動態字段驗證制作了一個登錄表單。 我有3個字段用戶名,電子郵件和密碼,所有這些字段都是必填字段。 當字段長度= 0時,我設置錯誤

editText.setError( getText(R.string.cannot_be_blank) );

並且此代碼可以正常工作,但是當我更改方向時,所有錯誤都消失了如何保存錯誤狀態?

謝謝。

更改方向后,框架將通過調用onCreate(Bundle savedInstanceState)來重新創建Activity。 在方向切換之前,如果在您的Activity中重寫了onSaveInstanceState(Bundle outState)方法,則該方法將被調用。

您可以在傳遞給onSaveInstanceState方法的Bundle中保存錯誤狀態。 此捆綁包作為savedInstanceState捆綁包傳遞到onCreate()方法。

因此,您需要按如下所示重寫Activity中的onSaveInstanceState方法(保存錯誤狀態):

@Override
protected void onSaveInstanceState(Bundle outState) {
    outState.putBoolean("errorOccurred", errorState);
    super.onSaveInstanceState(outState);
}

然后在您的onCreate方法中檢查savedInstateState Bundle是否為null。 如果沒有,您可以使用以下代碼從中檢索值:

boolean errorOccurred = false;  
if (savedInstanceState != null) {
    errorOccurred = savedInstanceState.getBoolean("errorOccurred"); 
}

更改方向后,Android框架會銷毀Activity,然后為新方向創建一個新的活動。 因此,您的所有狀態都丟失了。

使用SharedPreferences可以存儲和還原狀態和TextEdit值。

轉動設備時會發生以下情況:“ Activity貫穿其生命周期,以應對布局必須從縱向更改為橫向的事實。

您應該查看有關如何處理運行時更改的開發人員文檔。

暫無
暫無

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

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