@Override
protected void onSaveInstanceState(Bundle outState){
……必要な情報をBundleに保存する……
}
@Override画面を回転させるイベントが発生すると、Androidはまず表示されている部品類のonSaveInstanceStateメソッドを呼び出します。ここで、必要な情報を引数に渡された「Bundle」というクラスのインスタンスを使って保管してから、画面に表示されている部品類が一度画面から外され消えます。そして新たに回転された状態でそれらの部品が用意されます。この時、再びイベントが発生し、「onRestoreInstanceState」メソッドが呼び出されます。ここで必要な情報を取り出して部品類に設定し、この作業が完了したところで画面に表示されます。
protected void onRestoreInstanceState(Bundle savedInstanceState){
……Bundleから必要な情報を取得し設定する……
}
[Bundle].putString( キー, 値 );Bundleでは、値を「キー」で管理しています。特定のキーを指定して値を保管し、取り出すときはそのキーで値を検索します。ここでは「putString」でTextViewのテキストを"MESSAGE"というキーに保管し、「getString」それを取り出してから再びTextViewに設定しています。こうすることで、TextViewのテキストを再現していたのです。
String 変数 = [Bundle].getString( キー );
※リストが表示されない場合
AddBlockなどの広告ブロックツールがONになっているとリストなどが表示されない場合があります。これらのツールをOFFにしてみてください。
package jp.tuyano;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.*;
public class SampleApp extends Activity {
private TextView text1;
private EditText edit1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
text1 = (TextView)this.findViewById(R.id.text);
edit1 = (EditText)this.findViewById(R.id.edit);
Button btn = (Button)this.findViewById(R.id.btn);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String s = "入力:" + edit1.getText();
text1.setText(s);
}
});
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
String s = (String)text1.getText() + "(回転前に保存)";
outState.putString("MESSAGE", s);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
String s = savedInstanceState.getString("MESSAGE");
text1.setText(s);
}
}
| << 前へ | 次へ >> |