我最近偶然发现了一个问题。
我正在使用这样的嵌套首选项屏幕:
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<PreferenceScreen
android:key="pref_name"
android:title="@string/pref_title" >
</PreferenceScreen>
当我的屏幕将焦点放在嵌套首选项屏幕上并且我更改屏幕方向时,嵌套的首选项屏幕将关闭。
我也试过包括:
android:configChanges="orientation|keyboardHidden"
在AndroidManifest.xml中,但没有用。
有人有解决方案吗?
编辑可能的解决方案:
我确实找到了解决方案。我以为是这一行:
android:configChanges="keyboardHidden|orientation|screenSize"
答案 0 :(得分:5)
知道了。为了防止嵌套屏幕在旋转时关闭,您需要确保为父屏幕指定了键值。而已。例如:
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
android:key="useless_key">
<PreferenceScreen
android:key="pref_name"
android:title="@string/pref_title" >
</PreferenceScreen>
</PreferenceScreen>
旁注,虽然重写onConfigChanges解决了这个问题,但你几乎不应该这样做。它完全改变了Activity通常的行为方式。轮换只是配置更改发生的众多原因之一。如果您的Activity无法正确处理旋转,那么它在处理其他条件时也会失败。查看具有洞察力的post了解更多信息。