在 Android 模拟器中观察我的应用程序行为,我发现在更改屏幕方向 (Ctrl+F11) 后保留了 EditText 内容。但是 TextView 的内容被重置为其初始值,并且不保留程序设置的最新信息。这是定义上的行为吗?我能做些什么来保留这些内容?
问问题
5296 次
3 回答
12
您可以savedInstanceBundle
通过覆盖 Activity 中的两个方法来使用 来保留数据,如下所示:
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
super.onSaveInstanceState(savedInstanceState);
// Save state to the savedInstanceState
savedInstanceState.putString("MyString", textview.getText());
}
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
// Restore state from savedInstanceState
String myString = savedInstanceState.getString("MyString");
textview.setText(myString);
}
将您的项目添加到Bundle
in 中onSaveInstanceState
,并在onRestoreInstanceState
. 这与在创建活动时通过意图传递值的方式类似。
于 2012-10-10T15:01:29.033 回答
11
在您的TextView 中使用此属性android:freezesText="true"
。
于 2012-10-10T15:01:39.977 回答
3
当方向发生变化时,Android 会重新加载 Activity,从而破坏大部分信息,如 TextView 变化。您将需要覆盖onSaveInstanceState()
,它将在屏幕方向更改发生之前运行。然后,您将可以在Bundle
传入的onCreate
. 您还应该参考此内容来了解活动生命周期。
于 2012-10-10T14:58:08.870 回答