嵌入式首选项屏幕在Android中的Screenorientation更改时关闭

Thi*_*men 2 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>
Run Code Online (Sandbox Code Playgroud)

当我的屏幕将焦点放在嵌套首选项屏幕上并且我更改屏幕方向时,嵌套的首选项屏幕将关闭.

我也试过包括:

android:configChanges="orientation|keyboardHidden"
Run Code Online (Sandbox Code Playgroud)

在AndroidManifest.xml中,但没有奏效.

有人有解决方案吗?

编辑可能的解决方案:

我确实找到了解决方案.我以为是这条线:

android:configChanges="keyboardHidden|orientation|screenSize"
Run Code Online (Sandbox Code Playgroud)

Jay*_*yer 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>
Run Code Online (Sandbox Code Playgroud)

旁注,虽然重写onConfigChanges解决了这个问题,但你几乎不应该这样做.它完全改变了Activity通常的行为方式.轮换只是配置更改发生的众多原因之一.如果您的Activity无法正确处理旋转,那么它在处理其他条件时也会失败.查看这篇有见地的帖子了解更多信息.