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