导航活动时恢复edittext值

时间:2013-12-13 05:26:25

标签: android null android-edittext retain

我在第一个活动上有一个简单的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");
}

当他回到第一个活动时,我无法得到该文本。

任何人都可以说我错在哪里和哪里?

3 个答案:

答案 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());
}