私の理解では、デバイスの向きを変更すると、アプリが破棄され、再度作成されます。これは、デバイスを回転させるたびに onCreate() を実行する必要があることを意味します。
画面が回転するたびに、アプリが作成されるたびに EditText を設定しようとしています。というわけで、アプリを起動すると、テキスト フィールドに「Bap」と表示されます。次に、フィールドの内容を「Boop」に変更し、画面を回転させます。フィールドに「Bap」と表示されることを期待しますが、そうではありません。変更後、方向変更前の状態のままです。どうしてこれなの?
私の onCreate() は次のようになります。
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
EditText editText = (EditText)findViewById(R.id.edit_message);
editText.setText("Bap", TextView.BufferType.EDITABLE);
}
setText() 呼び出しを onResume() に移動すると、デバイスを回転させるたびにテキスト フィールドがリセットされ、すべてが期待どおりに機能することに注意してください。
注:同様の質問が寄せられていることは承知していますが、与えられた回答は、この動作が発生する理由を実際には説明していません。