我有两个不同的活动,第一个我在一些EditTexts中输入一些信息,然后我转到第二个活动,但是当我返回时,第一个活动中EditTexts上的文本消失了。
这是第一个活动的OnCreate():
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.act_frm_recetas);
txtClient = (EditText) findViewById(R.id.txtNombreCliente);
if(savedInstanceState != null){
String client = savedInstanceState.getString("Client");
txtClient.setText(client);
}
}
我正在使用onSaveInstanceState方法来保存信息
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
String x = txtClient.getText().toString();
savedInstanceState.putString("Client", x);
super.onSaveInstanceState(savedInstanceState);
}
在进行调试时,我可以看到savedInstanceState Bundle确实已在onSaveInstanceState方法中填充,但在OnCreate中显示为null。
也许我必须在第二项活动中添加一些内容?除了一个让我回到第一个活动的按钮之外,我目前没有任何东西。
答案 0 :(得分:0)
您需要将super.onSaveInstanceState(savedInstanceState);
作为onSaveInstanceState
方法的第一行。
接下来你需要把
if(savedInstanceState != null) {
String client = savedInstanceState.getString("Client");
txtClient.setText(client);
}
进入onRestoreInstanceState
方法。只有在重新绘制应用时才会调用onCreate
。
答案 1 :(得分:0)
它显示为null,因为仅在首次创建该活动时调用onCreate,当您从第二个活动返回时,它会恢复您的第一个活动..在onResume()方法上显示它
答案 2 :(得分:0)
我的猜测是第一个活动尚未被销毁,因此当您导航回第一个活动时,永远不会调用onCreate
答案 3 :(得分:-1)
我想当onactivity要加载到内存中时调用onCreate,那时活动不包含任何内容。这就是为什么它总是返回null。
保存您拥有onsaveinstance方法的数据并恢复您的onrestoreinstance方法。
onSaveInstanceState()是一种用于在暂停活动之前存储数据的方法。
onRestoreInstanceState()是用于检索该数据的方法。