我使用xml来表示我的ContextMenu,就像:
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/Ordermenu" android:title="Order">
<menu android:id="@+id/OrderBySubMenu">
<item android:id="@+id/OrderByASC" android:title="Order ASC" />
<item android:id="@+id/OrderByDESC" android:title="Order DESC" />
<item android:id="@+id/Cancel" android:title="Cancel" />
</menu>
</item>
<item android:id="@+id/ActionAmenu" android:title="Action A"/>
</menu>
我使用以下代码在我的onCreateContextMenu
中显示菜单MenuInflater inflater = getMenuInflater();
inflater.inflate(R.layout.my menu, menu);
我使用以下代码管理选项点击:
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.Displaymenu:
//do stuff
return true;
case R.id.OrderByASC:
//do stuff
return true;
case R.id.OrderByDESC:
//do stuff
return true;
default :
return(super.onOptionsItemSelected(item));
}
启动上下文菜单,显示两个选项:
点击订单显示子菜单:
现在,如果用户单击取消(或单击硬件后退按钮),则不会指定任何操作,因此它会调用super.onOptionsItemSelected(item)并返回到我的主要活动。
在这种情况下,如何设法返回主菜单?即显示初始值:
答案 0 :(得分:1)
我很久以前就尝试了这个,但我认为你必须覆盖onPrepareOptionsMenu以使其工作。这是在显示之前调用的,您必须在此处放置标记以显示为用户显示的项目。
尝试这样的事情:
@Override
public boolean onPrepareOptionsMenu(Menu menu)
{
// Clear the previous layout
menu.clear();
if(showMainMenu)
{
// Add main menu items..
menu.add(0, R.id.ordermenu, 0, "True");
}
else
{
// Add sub-menu items
menu.add(0, R.id.ordermenuASC, 0, "True");
}
return super.onPrepareOptionsMenu(menu);
}
因此,当用户单击主菜单项时,将boolean标志更改为重做该过程。
答案 1 :(得分:0)
最后,它只通过添加:
起作用case R.id.Cancel:
openContextMenu(findViewById(selected_view_id));
return true;
in public boolean onContextItemSelected(MenuItem item)
selected_view_id由
存储selected_view_id=v.getId();
onCreateContextMenu中的
希望它能帮助别人。