動的フィールド検証を使用してログインフォームを作成します。ユーザー名、電子メール、パスワードの 3 つのフィールドがあり、これらのフィールドはすべて必須です。フィールド長 = 0 の場合、エラーを設定します
editText.setError( getText(R.string.cannot_be_blank) );
このコードは正常に動作しますが、方向を変更するとすべてのエラーが消えますエラー状態を保存するには?
ありがとう。
動的フィールド検証を使用してログインフォームを作成します。ユーザー名、電子メール、パスワードの 3 つのフィールドがあり、これらのフィールドはすべて必須です。フィールド長 = 0 の場合、エラーを設定します
editText.setError( getText(R.string.cannot_be_blank) );
このコードは正常に動作しますが、方向を変更するとすべてのエラーが消えますエラー状態を保存するには?
ありがとう。
向きが変更されると、フレームワークは を呼び出してアクティビティを再作成しonCreate(Bundle savedInstanceState)
ます。向きを切り替える前にonSaveInstanceState(Bundle outState)
、Activity でメソッドがオーバーライドされている場合、メソッドが呼び出されます。
onSaveInstanceState
メソッドに渡された Bundle にエラーの状態を保存できます。このバンドルは、 BundleonCreate()
としてメソッドに渡されます。savedInstanceState
したがって、アクティビティのメソッドを次のようにオーバーライドする必要があります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 フレームワークはアクティビティを破棄し、新しい向き用に新しいものを作成します。したがって、すべての状態が失われます。
SharedPreferences を使用して、状態と TextEdit の値を保存および復元します。
Activity
デバイスを回転させると、レイアウトを縦向きから横向きに変更する必要があるという事実に対処するために、デバイスのライフサイクルが実行されます。
How to Handle Runtime Changesについては、開発者向けドキュメントを参照してください。