嗨,我正在练习Bundle savedInstanceState
如何在活动创建和恢复中工作。我曾经尝试这样做:在捆绑测试中设置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);
}
在第一onCreate()
显然这将设置EditText
场“你好”作为savedInstanceState
是空的if
块将不会被执行。当我改变Activity
经过所有的回调和烤面包的if
块字符串的方向,但是,它不会与Bundle
传入值设置mTextBox
该EditText
仍然设置为hello
,而不是Joe
,然而,Toast
如果区块显示Joe
。
任何人都可以指出为什么这不符合我的期望?
谢谢
是不是你应该使用mTextBox。 setText() name.setText(savedInstanceState.geteString(“name”)); 部分? – Sheychan
对不起,我已经从AS复制了我的代码并在此处更改了变量名称,但错过了更改该变量的名称,现在它已更新。感谢您发现错误。 – dhssa
你应该使用https://github.com/frankiesardo/icepick –