切换屏幕方向时保存和恢复 ButtonText
Posted
技术标签:
【中文标题】切换屏幕方向时保存和恢复 ButtonText【英文标题】:Save and restore a ButtonText when screen orientation is switched 【发布时间】:2010-11-07 12:25:19 【问题描述】:像往常一样在 android 中,每次屏幕翻转到纵向/横向模式时,Activity 都会运行从 onSaveInstanceState 到 onDestroy 的生命周期,然后重新创建。
在我的 Activity 中有一个可由用户更改的 ButtonText。它已重置为初始状态,但我必须以某种方式保存最后一个状态。我怎样才能做到这一点,我必须重写 onSaveInstanceState 吗?有人可以举个例子吗?
【问题讨论】:
【参考方案1】:我遇到了同样的问题,并希望默认实现会负责恢复按钮的文本。不幸的是,它没有。最后我找到了属性 android:freezesText 分别是方法 setFreezesText(boolean)。当设置为 true 时,按钮将自动恢复其文本。
参见Button的超类TextView的参考:http://developer.android.com/reference/android/widget/TextView.html#attr_android:freezesText
【讨论】:
这个答案很有效,就像将"android:freezesText="true"
添加到您的按钮 XML 和按钮文本保存在方向更改中一样简单【参考方案2】:
第 1 步:在 Button
上致电 getText().toString()
以获取标题。
第 2 步:在 Bundle
上调用 putString()
以存储标题。
步骤#3:在Bundle
上调用getString()
传递给onRestoreInstanceState()
的实现(或者在onCreate()
中,如果Bundle
不是null
,如果你愿意的话)来获取你的标题返回,然后在您的 Button
上调用 setText()
以将标题放回。
Here is a sample project 使用onSaveInstanceState()
保存联系人的Uri
(这也会影响Button
是否启用)。
【讨论】:
以上是关于切换屏幕方向时保存和恢复 ButtonText的主要内容,如果未能解决你的问题,请参考以下文章
Android中Activity运行时屏幕方向与显示方式详解