Menu items keeps on adding on every menu button press

无人久伴 提交于 2020-01-14 04:25:15

问题


I have added two menu item . Both of them works good but whenever i press menu button new menu items appear beside the old one . Like below u can see

below is my menu item 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>

and here is my code

@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;
    }

please help where i am wrong ?

Sorry this will get to long but , I have second Question

2) My second question i have another menu. xml in which there is share icon in place of search icon , But when i am trying to show on action bar with same code menu item does not show on action bar . below is my another menu 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> 

and its code

@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);
}

回答1:


Try this

@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;
}

use menu.clear()




回答2:


The best to do is as this :

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

if you have just one menu. Then set menu from Activity page and return true then no need to clear menu. and no duplicate menu will appear.

But if you use two fragment and have to change activity menu as per fragment then only need to clear menu and reset it with new one.

And if you are using onCreateOptionsMenu(Menu menu) in fragment then remove them.



来源:https://stackoverflow.com/questions/38869893/menu-items-keeps-on-adding-on-every-menu-button-press

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!