こんにちは私はBundle savedInstanceState
がアクティビティの作成と復元でどのように動作するのかを練習しています。 savedInstanceState
がif
ブロックが実行されることはありませんnullであるとして、これは「ハロー」とEditText
フィールドを設定します明らかに最初のonCreate()
でバンドルテストのEditTextが動作しない
private EditText mTextBox;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTextBox = (EditText) findViewById(R.id.etName);
mTextBox.setText("hello");
if(savedInstanceState != null){
Toast.makeText(this, savedInstanceState.getString("name"),
Toast.LENGTH_SHORT).show();
mTextBox.setText(savedInstanceState.geteString("name"));
}
}
@Override
protected void onSaveInstanceState(Bundle outState) {
outState.putString("name", "Joe");
super.onSaveInstanceState(outState);
}
:私はこれを試してみました。私はActivity
は、すべてのコールバックとトーストif
ブロック内の文字列を通過する方向を変更する場合は、しかし、それは、渡されたBundle
からの値でmTextBox
を設定しません。EditText
はまだhello
代わりのJoe
、しかし、Toast
に設定されていますinブロックはJoe
を示します。
これが私の期待どおりに機能しない理由を誰でも指摘できますか?
ありがとうございました
あなたはmTextBoxを使用していません。 setText()on name.setText(savedInstanceState.geteString( "name")); 部分? – Sheychan
申し訳ありませんが、ASからコードをコピーしてここに変数名を変更しましたが、その変数を変更していないため、更新されました。間違いを発見してくれてありがとう。 – dhssa
https://github.com/frankiesardo/icepick –