【问题标题】:Nested Preference Screen closes on Screenorientation change in Android嵌套首选项屏幕在 Android 中的屏幕方向更改时关闭
【发布时间】:2013-04-18 15:02:49
【问题描述】:

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

我正在使用这样的嵌套 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"

【问题讨论】:

  • 请发布日志猫
  • 在 LogCat 中没有显示特定的消息或错误。这可能只是自然行为?基本上嵌套的 ScreenPreference 关闭,主 ScreenPreference 再次出现。显然,我希望焦点坚持嵌套的 ScreenPreference。
  • 我的应用程序的首选项中有一个嵌套片段。它适用于位置更改...因此,如果您的片段关闭,您必须在 logcat 中获取 smth...否则,我无法帮助您
  • 我遇到了同样的问题。你有没有找到解决办法?
  • @JaySoyer 看看我提出的解决方案。不确定这是否解决了它。它已在我的应用程序中修复。

标签: android screen-orientation preference preferencescreen


【解决方案1】:

知道了。为了防止嵌套屏幕在旋转时关闭,您需要确保父屏幕被赋予一个键值。就是这样。例如:

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

【讨论】:

  • 谢谢,这为我解决了问题。这应该是公认的答案。
猜你喜欢
  • 2013-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多