更改屏幕方向后,TextView内容丢失

10

观察 Android 模拟器中应用的行为,我发现在更改屏幕方向(Ctrl+F11)后 EditText 中的内容保留,但 TextView 的内容重置为其初始值,并未保留程序设置的最新信息。这是固有的行为吗?我该如何保留这些内容?

3个回答

13

你可以通过覆盖活动内的两个方法来使用savedInstanceBundle保留数据,类似于以下示例:

您可以使用savedInstanceBundle通过覆盖活动内的两个方法来保存数据,如下所示:

@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);
}

onSaveInstanceState中将您的项目添加到Bundle,并在onRestoreInstanceState中读取它们。这与创建活动时通过意图传递值的方式类似。


对我有用!谢谢。 - J. B. Rainsberger

12

在你的TextView中使用此属性:android:freezesText="true"


3
似乎这还不够。你还需要添加什么内容? - user153275

3

当屏幕方向发生变化时,Android 会重新加载 Activity,因此大部分信息(例如 TextView 的更改)都会被销毁。您需要重写 onSaveInstanceState() 方法,在屏幕方向更改之前运行。然后在传递给 onCreateBundle 中访问它。您还应该参考这个链接了解 Activity 生命周期


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接