EditTextに文字列が入力がされた状態で画面回転を行うと何もしないでも文字列が回転後も保持されていて不思議だったのでどうやって保持しているの調査してみました。
結論からいうと、EditTextのonSaveInstanceState
で保存されていました(より正確にいうと、EditTextはTextViewを継承しており、継承元のTextViewのonSaveInstanceState
で保存処理が行われています)。
実際の処理を抜粋したのが以下のコード。
1 | SavedState ss = new SavedState(superState); |
保存していた文字列を画面回転後に再度EditTextにセットするのはEditTextonRestoreInstanceState
内の下記コード。
1 | if (ss.text != null) { |
画面回転後にEditTextに入力されている文字列を元に再度通信クエリを実行する等の処理を行う場合は、onRestoreInstanceState
以降の文字列がセットされたタイミングで行わないと空文字しか取得できずハマります。