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

时间:2012-10-10 14:51:08

标签: android lifecycle

在Android模拟器中观察我的应用程序行为,我发现更改屏幕方向后会保留EditText内容(Ctrl + F11)。但TextView内容重置为其初始值,并不保留程序设置的最新信息。根据定义,这种行为?我该怎么做才能保留这些内容?

3 个答案:

答案 0 :(得分:11)

您可以使用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);
}

将您的商品添加到Bundle中的onSaveInstanceState,并在onRestoreInstanceState期间重新阅读。这与在创建活动时通过意图传递值的方式类似。

答案 1 :(得分:11)

TextView android:freezesText="true"中使用此属性。

答案 2 :(得分:3)

当方向发生变化时,Android会重新加载活动,因此会破坏TextView更改等大多数信息。您需要覆盖onSaveInstanceState(),它将在屏幕方向更改发生之前运行。然后,您可以在传递到Bundle的{​​{1}}中访问它。您还应该参考此内容来了解​​Activity生命周期。