Android - 屏幕旋转后出现不需要的子菜单

时间:2014-11-04 12:08:45

标签: android android-actionbar android-menu

我创建了一个非常简单的演示项目来演示错误:

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;

public class MenuBugActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = new MenuInflater(this);
        inflater.inflate(R.menu.options_bug_demo, menu);
        return true;
    }
}

主要布局 - main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"/>

菜单项options_bug_demo.xml:

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:id="@+id/menu_bug"
        android:title="Bug"
        android:icon="@drawable/ic_action_settings"
        android:showAsAction="always">
        <menu>
            <item
                android:id="@+id/menu_bug_demo"
                android:title="Bug demo">
                <menu>
                    <item android:title="Settings"/>
                </menu>
            </item>
        </menu>
    </item>
</menu>

1.点击“首选项”图标: Clicking "Preferences" icon 2.点击“Bug demo”: Clicking on "Bug demo" 3.点击“设置”: Clicking on "Settings" 4.将屏幕方向改为水平方向: Changing screen orientation to the horizontal

屏幕旋转后,子菜单“设置”(在步骤3关闭)再次出现!防止子菜单在旋转后出现的唯一方法 - 删除字符串

android:id="@+id/menu_bug_demo"

来自资源文件options_bug_demo.xml

问题是如何避免子菜单的这种不受欢迎的行为?

P.S。在4.0.4和4.1.1上观察到该错误,并且在4.4.2

上观察到

0 个答案:

没有答案