android - 覆盖方向更改但不重新启动 Activity 并传递状态数据

标签 android

我希望能够在设备重新定位为横向或纵向时更改布局。出于速度和资源目的(以及适用于我的应用程序的其他问题),我不希望我的应用程序被销毁并重新启动。我有几个我希望在方向更改之间保留的对象,因为销毁和重新创建它们没有任何好处!我只是想更改一些按钮和 TextView 的位置,以便它们适合当前方向。简单吧?

嗯,不,不是。为了实现上述目标,我在应用程序 list 中包含了用于方向更改的 configChange 选项。然后我实现了 onConfigurationChanged() ,我在其中确定并应用适当的布局。简单是吗?

但现在使用我布局中的 TextView 。究竟如何使用这种响应方向变化的特殊方法,将前一个 TextView 中的相同文本放到新的 TextView 中?没有实例数据传递给 onConfigurationChanged() 方法。同样对于一些按钮,它们可以被禁用或启用......我需要在方向改变后知道这一点。

如果我让 Android 破坏并重新启动我的 Activity,它首先会创建不必要的工作。我只想移动几个按钮和 TextView ……而不是重新启动整个应用程序。这太可笑了!

谁能帮我实现需求?

最佳答案

维护独立于配置的数据的一种简单方法是使用 onRetainNonConfigurationInstance()及其配套方法 getLastNonConfigurationInstance() .只需返回一个对象,其中包含您要在重新创建 Activity 时重用的所有数据。

在 Honeycomb 中,或者如果您使用的是 Android 兼容包,您可以直接调用 Fragment.setRetainInstance(true)反而。请参阅文档。

关于android - 覆盖方向更改但不重新启动 Activity 并传递状态数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7108338/

相关文章:

java - 将 JSON 字符串转换为 Java/Python (Jython) 对象?

android - 如何处理 ActionBarActivity fragment 中的后退按钮?

java - retrofit 时禁用 SPDY 连接

c# - 获取可绘制资源

android - 关于如何在谷歌游戏服务中实现回合制游戏的几个问题

java - 如何在警报对话框中将项目设置为选中?

Android:content://sms/sent 的内容观察器不工作

android - 任务 ':app:compileDebugAidl' 执行失败。 > aidl 不见了

java - 检查 ScrollView 是否已经到达布局的顶部

java - Android:将图像保存到存储器