切换屏幕方向时保存和恢复 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运行时屏幕方向与显示方式详解

android之屏幕方向切换

使用扩展屏时设置鼠标切换到另一屏幕的方向

Android TabActivity 和动态 Tabs 屏幕方向问题

如何在任务切换器中显示锁定屏幕并正确恢复

屏幕方向 横竖屏切换