android - Activity 在打开 SubMenu 时泄漏方向更改窗口

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

我的 Android 应用程序有问题。该 Activity 有一个选项菜单。

菜单看起来像这样:

<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 会消失,由方向更改触发。我可以重新打开选项菜单,但不能重新打开子菜单。是否可以模拟点击第一个菜单项?

提前致谢!

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

最佳答案

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

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

关于android - Activity 在打开 SubMenu 时泄漏方向更改窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7309010/

相关文章:

css - Superfish - 当前子菜单始终显示

java - 如何随机排列数组中的问题

android - 如何为 libusb android 应用程序授予/dev/bus/usb 权限?

android - 任务栈和返回栈在android中是一样的吗

memory-leaks - clojure 应用程序使用 eval 泄漏内存

未连接到计算机时的 iPhone 内存泄漏监控

iphone - 奇怪的内存泄漏

java - 如何从 selenium webdriver 的子菜单中选择下拉菜单

java - 如何在Android中的另一个线程中运行一个方法?

css - 根据元素是否包含特定子元素有条件地设置元素样式?