android - 嵌套首选项屏幕因 Android 中的屏幕方向更改而关闭

标签 android screen-orientation preference preferencescreen

我最近偶然发现了一个问题。

我正在使用这样的嵌套 PreferenceScreen:

<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"

最佳答案

明白了。为了防止嵌套屏幕在旋转时关闭,您需要确保为父屏幕指定一个键值。就是这样。例如:

<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了解更多。

关于android - 嵌套首选项屏幕因 Android 中的屏幕方向更改而关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16086487/

相关文章:

objective-c - Objective C——创建和初始化对象的首选方式

android - 换行符和制表符未正确显示

android - 如何在 Android 模拟器中更改屏幕方向?

java - 当另一个声音在 android studio 中播放时停止播放声音

css - 如何让滚动只在一个 <div> 上起作用?

android - 禁用方向更改 - WindowManager

java - 我可以在偏好设置中制作铃声吗

android - 偏好铃声默认值

android - 如何在标签之间留出空格?

android - DisplayMetrics.scaledDensity 在 Android 中实际返回什么?