我在我的应用程序上使用了第四级活动菜单,一切正常,但是当我在第四级菜单上选择一个项目时,系统不再调用onOptionsItemSelected
,所以我无法在我的应用程序上获取所选项目。
这是我的代码
编辑 1:ID 中的破折号-
令人困惑,我正在将它们从代码中删除。对此感到抱歉
public class Main extends FragmentActivity
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// .... some code
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.Level1: {
Toast.makeText(getBaseContext(), "Level 1", Toast.LENGTH_SHORT).show();
break;
}
case R.id.Level2: {
Toast.makeText(getBaseContext(), "Level 2", Toast.LENGTH_SHORT).show();
break;
}
case R.id.Level3: {
Toast.makeText(getBaseContext(), "Level 3", Toast.LENGTH_SHORT).show();
break;
}
case R.id.Level4: {
Toast.makeText(getBaseContext(), "Level 4", Toast.LENGTH_SHORT).show();
break;
}}
return true;
}
这里是 XML 文件main.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@+id/Level1"
android:showAsAction="ifRoom"
android:title="@string/Level1">
<menu>
<item android:id="@+id/Level2"
android:title="@string/Level2">
<menu>
<item android:id="@+id/Level3"
android:title="@string/Level3">
<menu>
<item android:id="@+id/Level4"
android:title="@string/Level4"/>
</menu>
</item>
</menu>
</item>
</menu>
</item>
</menu>
我正在阅读文档,但它没有说明嵌套子菜单的限制。
最后,我的解决方案是将 a 附加android:onClick="onOptionsItemSelected"
到第四级项目,例如:
<menu>
<item android:id="@+id/Level4"
android:onClick="onOptionsItemSelected"
android:title="@string/Level4"/>
</menu>
强制调用onOptionItemSelected
,它可以工作,但有更好的解决方案吗???
编辑 2:我刚刚发现此操作不适用于 Android 4.0.3 或更早版本。!!!甚至不使用onMenuItemSelected
...!!!
现在我有问题,请帮助...!