每次按下菜单按钮时,菜单项都会不断添加

Menu items keeps on adding on every menu button press

我添加了两个菜单项。它们都很好用,但每当我按下菜单按钮时,新菜单项就会出现在旧菜单项旁边。就像下面你可以看到

下面是我的菜单项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);
}

试试这个

@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()

最好的做法是这样:

@Override
public void onCreateOptionsMenu(Menu menu ) {
   getMenuInflater().inflate(R.menu."your current activity name ", menu);
return true;
}

如果您只有一个菜单。然后从 Activity 页面设置菜单和 return true 然后不需要清除菜单。并且不会出现重复的菜单。

但是如果您使用两个片段并且必须根据每个片段更改 activity 菜单,那么只需要清除菜单并用新菜单重置它。

如果您在 fragment 中使用 onCreateOptionsMenu(Menu menu) 然后删除它们。