我在我的应用程序上使用第四级Active Menu,一切都很完美但是当我在菜单第四级选择一个项目时,系统不再调用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>
我正在阅读文档,但它没有说明嵌套子菜单的限制。
最后,我的解决方案是将android:onClick="onOptionsItemSelected"
附加到第四级项目,如:
<menu>
<item android:id="@+id/Level4"
android:onClick="onOptionsItemSelected"
android:title="@string/Level4"/>
</menu>
强制调用onOptionItemSelected
,它有效,但有更好的解决方案???
编辑2:我刚刚发现这种绕行方式不适用于Android 4.0.3或更早版本。甚至没有使用onMenuItemSelected
...... !!!
现在我遇到了问题,请帮忙...... !!