Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 选项选项卡中的菜单特定选项卡的活动_Android_Menu_Tabactivity - Fatal编程技术网

Android 选项选项卡中的菜单特定选项卡的活动

Android 选项选项卡中的菜单特定选项卡的活动,android,menu,tabactivity,Android,Menu,Tabactivity,我的问题是,我有一个TabActivity,它现在有4个选项卡。第一个选项卡是一个特殊的详细信息选项卡,用户可以在其中修改一些数据 问题是,如果我为“活动”添加一个Options Menu,则Options Menu会出现在每个选项卡上。 我试图在OnCreateOptions菜单中检查当前的mTabHost.getCurrentTabTag,但没有任何改变。 那么,如何做到这一点呢 下面的代码仍然显示每个选项卡上的选项菜单 public boolean onCreateOptionsMenu

我的问题是,我有一个TabActivity,它现在有4个选项卡。第一个选项卡是一个特殊的详细信息选项卡,用户可以在其中修改一些数据

问题是,如果我为“活动”添加一个Options Menu,则Options Menu会出现在每个选项卡上。 我试图在OnCreateOptions菜单中检查当前的mTabHost.getCurrentTabTag,但没有任何改变。 那么,如何做到这一点呢

下面的代码仍然显示每个选项卡上的选项菜单

 public boolean onCreateOptionsMenu(Menu menu) {    
  if(mTabHost.getCurrentTabTag()==getString(R.string.tab_details)) {
   boolean result = super.onCreateOptionsMenu(menu);
   menu.add(0, EDIT_ID, 0, R.string.menu_edit).setIcon(R.drawable.edit);
   return result;
  }    

  return true;
 }

 public boolean onMenuItemSelected(int featureId, MenuItem item) {
  switch (item.getItemId()) {
       case EDIT_ID: {   
        Toast.makeText(this, "o.O", Toast.LENGTH_LONG).show();   
       }
  }

  return super.onMenuItemSelected(featureId, item);
 } 

我看到您实际上是在比较strings标记和==,通常,使用.equals方法这样做更好。也许这会解决你的问题。 要从文档中动态更新选项菜单,请执行以下操作:

如果要更改选项 菜单每次打开时,您必须 覆盖OnPrepareOptions菜单


您是否为每个选项卡创建了一个活动?不,这是一个活动,它有一个包含4个选项卡的TabHost。这样更好,但并不能解决问题。事实上,我不确定你是否能在每个标签上找到不同的选项菜单,因为它是特定于活动的。当您在4个选项卡中停留在相同的活动中时,菜单是相同的。因此,您可能需要使用上下文菜单。抱歉,没有正确阅读文档。如果您想在每次打开optionmenu时更改它,则需要使用onPrepareOptionMenu并在其中进行更改。