我是这个论坛的新手,也是Android开发本身,所以我的问题可能是一个非常愚蠢的问题,我为此深表歉意。我开始阅读开发人员android.com上的开发指南,直到上下文菜单的一部分,一切都很好。现在,我尝试使用一个包含一些可检查项目的子菜单的上下文菜单。因此,我将子菜单和项目添加到我的菜单中。xml和一些item.setChecked(true)方法(true)方法中的(...)方法。

菜单。xml

<?xml version="1.0" encoding="utf-8"?>  
  <menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/info"
        android:title="@string/info" />
    <item android:title="@string/change">
        <menu>
           <item android:id="@+id/checkable_item1"
               android:checked="true"
               android:checkable="true"
               android:title="@string/hello"/>
           <item android:id="@+id/checkable_item2"
               android:checkable="true"
               android:title="@string/moin"/>
           <item android:id="@+id/checkable_item3"
               android:checkable="true" 
               android:title="@string/aloha"/>
       </menu>
  </item>   
</menu>

我的.java文件的一部分

...
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
      ContextMenuInfo menuInfo)
{
   super.onCreateContextMenu(menu, v, menuInfo);
   MenuInflater inflater1 = getMenuInflater();
   inflater1.inflate(R.menu.context_menu, menu);
}
@Override
public boolean onContextItemSelected(MenuItem item)
{
   switch(item.getItemId())
   {
   case R.id.checkable_item1:
      if(item.isChecked()) item.setChecked(false);
      else item.setChecked(true);
      return true;
   case R.id.checkable_item2:
      if(item.isChecked()) item.setChecked(false);
      else item.setChecked(true);
      return true;
   case R.id.checkable_item3:
      if(item.isChecked()) item.setChecked(false);
      else item.setChecked(true);
      return true;
   default:
      return super.onContextItemSelected(item);
   }
}
...

现在的问题是,当我打开菜单并按下可检查的项目之一时,我可以看到绿色滴答物在上下文菜单关闭之前弹出在小框中,但是当我再次打开菜单时,tick就消失了。现在,我真的不知道为什么tick不留在盒子里。如果有人能给我提示并告诉我我在做什么错,那就太好了。感谢你在期待

Jean-Claude91

有帮助吗?

解决方案

我没有自己尝试过,但是如果我在此处正确阅读了描述(http://developer.android.com/reference/reference/android/App/App/Appivity.html#oncreatecontectecontextmenu(Android.view.contextmenu,android.view.view.view.view,view.view,, android.view.contextmenu.contextmenuinfo)),每次创建菜单时,都会调用您的布局资源。由于“方法返回之后不安全地保留在菜单上”,因此您需要处理选定的项目并将其持续到某个地方,然后将可选项目的当前状态传递到使用菜单中的on Create中使用该信息。

如果您不这样做,则每次都会根据您的默认设置(Menu.xml)重新创建菜单。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top