回転などで、Activityが破棄されようとしている時、Activity.onSaveInstanceStateに来るので、ここで引数のBundleに、独自のViewなどの情報を保存しておく。
Activity | Android Developers
Activity, Fragment, CustomView の使い分け - マッチョなActivityにさよならする方法 -
AndroidのActivityは再作成に備えてSavedInstanceStateを使おう - Ararami Studio
activity_main.xmlは、
TextViewとButton。
MainActivity.javaは、
package com.bgstation0.android.sample.activity_; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; // メインアクティビティ public class MainActivity extends Activity implements OnClickListener{ // アクティビティ生成時 @Override protected void onCreate(Bundle savedInstanceState) { // 既定の処理. super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // button1の初期化 Button button1 = (Button)findViewById(R.id.button1); // button1を取得. button1.setOnClickListener(this); // thisをセット. } // クリックされた時. @Override public void onClick(View v) { // TODO Auto-generated method stub // TextViewに"ABCDE"をセット. TextView textview1 = (TextView)findViewById(R.id.textview1); // textview1を取得. textview1.setText("ABCDE"); // "ABCDE"をセット. } }
button1が押されたら、textview1に"ABCDE"をセット。
最初はこうなっている。
button1を押すと、
"ABCDE"がセットされる。
ここで、回転させる。
Android エミュレータ画面回転しない:おじさんブログ:SSブログ
エミュレータの回転って、Ctrl+F11なのか。
"ABCDE"が消えてしまっている。
そこで、
onSaveInstanceStateで、TextViewのテキストを保存しておく。
今回は、Toast表示だけ。
この状態から、
button1で"ABCDE"。
回転で、
"ABCDE"がToast表示されたのでonSaveInstanceStateには来てる。
(EditTextなど一部のViewは、onSaveInstanceState処理をしなくても勝手に保持される。)
Sample/android/Activity/onSaveInstanceState/src/Activity at master · bg1bgst333/Sample · GitHub