问题
Observing my application behavior in Android emulator, I see that EditText contents is preserved after changing screen orientation (Ctrl+F11). But TextView contents is reset to its initial value and doesn't keep latest information set by the program. Is this behavior by definition? What can I do to keep this contents?
回答1:
Use this property in your TextView android:freezesText="true".
回答2:
You can use the savedInstanceBundle to keep hold of the data by overriding two methods inside your activity, similar to below:
@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);
}
Add your items to the Bundle in onSaveInstanceState, and read them back in during onRestoreInstanceState. This works in a similar way to passing values through intents when creating activities.
回答3:
When orientation changes happen, Android reload the Activity hence destroying most information like TextView changes. You will need to override onSaveInstanceState(), which will run before the screen orientation change happens. Then you will have access to it in your Bundle that is passed into onCreate. You should also reference this to understand the Activity Life cycle.
来源:https://stackoverflow.com/questions/12822267/textview-contents-is-lost-after-changing-screen-orientation