Sam*_*mah 14 android android-orientation android-activity
我创建了一个搜索屏幕,其中包含一个用于关键字,过滤器和搜索按钮的选项卡,以及三个用于不同类型结果的可选选项卡(每个包含一个ListView带有a ArrayAdapter).启动活动时,Parcelable[]如果已执行搜索,开发人员可以选择将结果作为额外内容传递.在onCreate()方法中,我正在创建Parcelable[]传递的三个选项卡中的每一个.
当我从过滤器选项卡上的按钮调用搜索时,我清除选项卡并使用新结果重新创建它们,这非常有效.问题是,当您旋转设备时,Android的自动方向切换支持似乎会重新创建整个活动,即调用onCreate().这意味着我的搜索结果将重置为Parcelable[]启动活动时传递的内容.
到目前为止,我唯一的解决方案就是调用finish()然后startActivity()用新结果重新启动活动.我确信必须有一个更简单的解决方案,而且我做了一些非常无趣的事情.
有一个更好的方法吗?
Fed*_*dor 32
有cource的.只需将configChanges属性添加到AndroidManifest.xml,就像这样:
<activity android:name=".MyActivity"
android:configChanges="orientation|keyboardHidden" />
Run Code Online (Sandbox Code Playgroud)
在Android上旋转活动 如何在Android上禁用方向更改? http://developer.android.com/guide/topics/manifest/activity-element.html#config
Pra*_*ani 14
您描述的是默认行为.您必须通过添加以下内容来自行检测和处理这些事件:
android:configChanges
Run Code Online (Sandbox Code Playgroud)
到您的清单,然后是您想要处理的更改.因此,对于方向,您将使用:
android:configChanges="orientation"
Run Code Online (Sandbox Code Playgroud)
并且对于打开或关闭的键盘,您将使用:
android:configChanges="keyboardHidden"
Run Code Online (Sandbox Code Playgroud)
如果你想要处理两者,你可以使用管道命令将它们分开,如:
android:configChanges="keyboardHidden|orientation"
Run Code Online (Sandbox Code Playgroud)
这将onConfigurationChanged在Activity您调用的任何内容中触发该方法.如果覆盖该方法,则可以传入新值.
希望这可以帮助.
| 归档时间: |
|
| 查看次数: |
23204 次 |
| 最近记录: |