【问题标题】:Activity has leaked window on orientation change with a SubMenu opened活动在打开子菜单的情况下泄漏了方向更改窗口
【发布时间】:2011-11-10 15:52:39
【问题描述】:

我的 Android 应用有问题。该活动有一个选项菜单。

菜单如下所示:

<menu
    xmlns:android="http://schemas.android.com/apk/res/android">
  <item
    android:title="@string/tx_1" 
    android:id="@+id/menu_1"        
    >
    <menu>
      <group android:checkableBehavior="single">
        <item 
          android:title="@string/tx_2" 
          android:id="@+id/menu_2"      
          />
        <item 
          android:title="@string/tx_3" 
          android:id="@+id/menu_3"      
          />
      </group>          
      <item 
        android:title="@string/tx_4" 
        android:id="@+id/menu_4"  
        android:checkable="true"    
        />
      </menu>
    </item>
  <item
    android:title="@string/tx_5"
    android:id="@+id/menu_5"
    />      
</menu>

所以当你点击第一个项目时会有一个子菜单。它看起来像一个对话框,但我找不到获得对该对话框的引用的方法。 当我旋转设备时,出现泄漏的窗口错误。因此,Android 似乎没有关闭 SubMenu。有没有办法防止这个错误? 当然,在重新创建后,由方向更改触发的 SubMenu 会消失。我可以重新打开选项菜单,但不能重新打开子菜单。是否可以模拟点击第一个菜单项?

提前致谢!

顺便说一句,我不想​​通过更改清单来绕过轮换。

【问题讨论】:

  • 您找到解决方案了吗?我也在为此苦苦挣扎。我尝试在 onMenuItemSelected 期间获取对 SubMenu 的引用,并在 onPause 活动期间调用 subMenu.close() 但由于某种原因无法解决问题。
  • 我也有同样的问题。我会花钱找到解决办法。

标签: android memory-leaks submenu options-menu orientation-changes


【解决方案1】:

简单的解决方案是防止在 App Orientation 更改时破坏 Activity 实例。 您可以通过在 Manifest 中声明以下内容来做到这一点:

<activity android:configChanges="orientation"
 ... />

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-25
    • 2021-06-16
    • 1970-01-01
    • 1970-01-01
    • 2021-08-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多