我添加了两个菜单项。它们都很好但每当我按下菜单按钮时,新的菜单项会出现在旧菜单旁边。如下所示你可以看到
下面是我的菜单项xml
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:title="Search"
android:icon="@drawable/search_white_24dp"
android:id="@+id/searchmenu"
app:showAsAction="always">
</item>
<item
android:icon="@drawable/settings_white_24dp"
android:title="Setting"
android:id="@+id/settingmenu"
app:showAsAction="always"
/>
</menu>
这是我的代码
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.searchmenu:
editText = DuwaManager.openSearchBox(this,
getSupportActionBar(), "DuwaListView");
break;
case R.id.settingmenu:
break;
case R.id.home:
NavUtils.navigateUpFromSameTask(this);
break;
}
请帮助我错了?
对不起,这会很长,但我有第二个问题
2)我的第二个问题我有另一个菜单。 xml,其中有共享图标代替搜索图标,但当我试图在操作栏上显示相同的代码菜单项时,不显示在操作栏上。下面是我的另一个菜单xml
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
>
<item
android:title="Share"
android:icon="@drawable/share_white"
android:id="@+id/share_tarika"
app:showAsAction="always"
/>
<item android:title="Setting"
android:icon="@drawable/settings_white_24dp"
android:id="@id/settingmenu"
app:showAsAction="always"/>
</menu>
及其代码
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.tarika_menu, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.share_tarika:
break;
case R.id.settingmenu:
break;
}
return super.onOptionsItemSelected(item);
}
答案 0 :(得分:3)
试试这个
@Override
public void onCreateOptionsMenu(Menu menu ) {
menu.clear();// use menu.clear
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu."your current activity name ", menu);
return true;
}
使用menu.clear()
答案 1 :(得分:1)
最好的办法是:
@Override
public void onCreateOptionsMenu(Menu menu ) {
getMenuInflater().inflate(R.menu."your current activity name ", menu);
return true;
}
如果您只有一个菜单。然后从“活动”页面设置菜单并返回true,然后无需清除菜单。并且不会出现重复的菜单。
但是如果您使用两个片段并且必须根据片段更改活动菜单,则只需要清除菜单并使用新菜单重置它。
如果您在片段中使用onCreateOptionsMenu(菜单菜单),请将其删除。