閉じる

android:freezesText

TextViewの属性で、ドキュメントには「trueに設定すると状態を保存するよ」的なことが書かれている。
ネットでは「Fragment#setRetainInstance(true)とした時に TextViewの内容も保存したいのなら trueにする」的な内容を目にするけど、実際の所は「TextView#onSaveInstanceState/TextView#onRestoreInstanceStateが内容の保存/復元を行うか否かの設定」という事らしい。
要は「Fragment#setRetainInstance(true)とした時、システムの方で TextView#onSaveInstanceState/TextView#onRestoreInstanceStateを呼んでよろしくやってくれるけど、android:freezesTextが trueに設定されていないと内容の保存/復元は行われないよ」だと。
デフォルトで falseになっているのは「TextViewは静的な内容で使われることの方が多く、無意味な保存/復元でリソースを無駄にしないように」という配慮からかと。
実際、TextViewの派生クラスである EditTextでは最初から trueに設定してあるしね。
というわけで、手動で TextView#onSaveInstanceState/TextView#onRestoreInstanceStateを呼んで保存/復元を行う際には trueに設定するようにというメモ。

コメントを残す

メールアドレスが公開されることはありません。必須項目には印がついています *

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)