Restoring state of TextView after screen rotation? Restoring state of TextView after screen rotation? android android

Restoring state of TextView after screen rotation?


If you want to force your TextView to save its state you must add freezesText attribute:

<TextView      ...      android:freezesText="true" />

From documentation on freezesText :

If set, the text view will include its current complete text inside of its frozen icicle in addition to meta-data such as the current cursor position. By default this is disabled; it can be useful when the contents of a text view is not stored in a persistent place such as a content provider


In order to retain data on orientation change you need to implement the two methods:

@Overrideprotected void onRestoreInstanceState(Bundle savedInstanceState) {    super.onRestoreInstanceState(savedInstanceState);    // Read values from the "savedInstanceState"-object and put them in your textview}@Overrideprotected void onSaveInstanceState(Bundle outState) {    // Save the values you need from your textview into "outState"-object    super.onSaveInstanceState(outState);}


1) Not all views with an ID save their state. Android widgets, with an ID, whose state can be changed by the user, appear to save their state on a soft kill. So EditText saves its state, but TextView does not save its state on a soft kill.

"AFAIK, Android only bothers saving state for things that are expected to change. That is why it saves the text in an EditText (which a user is likely to change) and perhaps does not save the state for a TextView (which normally stays static)"

Mark M

So you may choose to save the state of the textview in onSaveInstanceState and you may choose to restore the state of the textview in onCreate.

2) Best practice is to save "internal" non view instance state even if you declare

android:configChanges= "orientation|keyboardHidden" 

From the docs:

"However, your application should always be able to shutdown and restart with its previous state intact. Not only because there are other configuration changes that you cannot prevent from restarting your application but also in order to handle events such as when the user receives an incoming phone call and then returns to your application."

JAL