屏幕方向改变时,打开了一个子菜单,导致Activity泄漏窗口。

4

我有一个关于我的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没有关闭子菜单。有没有办法防止这个错误发生?当然,在通过方向更改重新创建后,子菜单会消失。我可以重新打开选项菜单,但无法重新打开子菜单。是否可能模拟单击第一个菜单项?谢谢!顺便说一下,我不想通过更改清单来绕过旋转问题。

你是否曾经找到解决办法?我也在苦苦挣扎。我尝试在onMenuItemSelected期间抓取SubMenu的引用,并在活动onPause期间调用subMenu.close(),但出于某种原因,这并不能解决问题。 - Robert Nekic
我有完全相同的问题。我愿意付费找到解决方法。 - Rémi
1个回答

0
简单的解决方法是在应用程序方向改变时防止销毁 Activity 实例。 您可以通过在清单文件中声明以下内容来实现:
<activity android:configChanges="orientation"
 ... />

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接