我在第一个活动上有一个简单的edittext,用户输入一些文本并移动到第二个活动,然后从那里移动到第三个活动,依此类推。 现在,当用户返回第一个活动时,编辑文本应该向他显示他在edittext中输入的文本。
SampleText= (EditText) findViewById(R.id.smpltxt);
SharedPreferences data = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
保存值:
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
super.onSaveInstanceState(savedInstanceState);
savedInstanceState.putString("MyString", SampleText);
}
恢复价值:
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
String myString = savedInstanceState.getString("MyString");
}
当他回到第一个活动时,我无法得到该文本。
任何人都可以说我错在哪里和哪里?
答案 0 :(得分:2)
经过大量的拔毛后,答案很简单。
在活动2的onBackPressed()
事件中添加:
public void onBackPressed() {
finish();
}
答案 1 :(得分:1)
替换
savedInstanceState.putString("MyString", SampleText);
与
savedInstanceState.putString("MyString", SampleText.getText().toString());
还要检查SampleText.getText()==null
是否需要添加。
答案 2 :(得分:0)
我认为默认行为可确保保存EditText
中的文本。
无论如何:这是怎么做的:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContent(/* your layout */);
SampleText= (EditText) findViewById(R.id.smpltxt);
if (savedInstanceState != null) {
String myString = savedInstanceState.getString("MyString");
SampleText.setText(myString);
}
}
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
super.onSaveInstanceState(savedInstanceState);
savedInstanceState.putString("MyString", SampleText.getText().toString());
}