操作栏上的 Android 选项菜单显示重复的图标

Siv*_*ish 1 android options-menu android-optionsmenu oncreateoptionsmenu

android 上的操作栏(工具栏)有 3 个选项菜单。它的工作正常。但问题是当我卸载并重新安装菜单项的重复项时。标题也保持不变,没有改变。有时,如果我们关闭应用程序并重新启动它的工作正常。我完全困惑和震惊。

这是代码 MainActivity (OnCreateOptionsMenu):

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        menu.clear();
        MenuInflater menuInflater = getMenuInflater();
        menuInflater.inflate(R.menu.menu_main, menu);
        MenuItem searchItem = menu.findItem(R.id.action_search);
        SearchManager searchManager = (SearchManager) MainActivity.this.getSystemService(Context.SEARCH_SERVICE);
        SearchView searchView = null;
        if (searchItem != null) {
            searchView = (SearchView) searchItem.getActionView();
        }
        if (searchView != null) {
            searchView.setSearchableInfo(searchManager.getSearchableInfo(MainActivity.this.getComponentName()));
        }
        MenuItem item = menu.findItem(R.id.action_wishlist);
        wishlistCount = (RelativeLayout) MenuItemCompat.getActionView(item);
        wishlistCount.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

            }
        });
        setWishlistCount();
        MenuItem cartitem = menu.findItem(R.id.action_cart);
        cartCount = (RelativeLayout) MenuItemCompat.getActionView(cartitem);
        cartCount.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

            }
        });
        restoreToolbar();
        return super.onCreateOptionsMenu(menu);
    }
Run Code Online (Sandbox Code Playgroud)

这是我的 menu_main.xml:

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        menu.clear();
        MenuInflater menuInflater = getMenuInflater();
        menuInflater.inflate(R.menu.menu_main, menu);
        MenuItem searchItem = menu.findItem(R.id.action_search);
        SearchManager searchManager = (SearchManager) MainActivity.this.getSystemService(Context.SEARCH_SERVICE);
        SearchView searchView = null;
        if (searchItem != null) {
            searchView = (SearchView) searchItem.getActionView();
        }
        if (searchView != null) {
            searchView.setSearchableInfo(searchManager.getSearchableInfo(MainActivity.this.getComponentName()));
        }
        MenuItem item = menu.findItem(R.id.action_wishlist);
        wishlistCount = (RelativeLayout) MenuItemCompat.getActionView(item);
        wishlistCount.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

            }
        });
        setWishlistCount();
        MenuItem cartitem = menu.findItem(R.id.action_cart);
        cartCount = (RelativeLayout) MenuItemCompat.getActionView(cartitem);
        cartCount.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

            }
        });
        restoreToolbar();
        return super.onCreateOptionsMenu(menu);
    }
Run Code Online (Sandbox Code Playgroud)

这是屏幕截图: 1:第一次: 在此处输入图像描述

2:正常: 在此输入图片描述

注意:当应用程序打开并打开导航栏时会出现问题,否则它工作正常。在 createoptionsmenu 上一直被调用,但仍然无法正常工作。任何人都可以帮忙吗?

Imt*_*bir 7

更准确地说,这应该可以解决问题:

menu.clear()并且return super.onCreateOptionsMenu(menu);成功了!:)

@Override
public boolean onPrepareOptionsMenu(final Menu menu) 
{
    menu.clear();
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.home, menu);
    return super.onCreateOptionsMenu(menu);
}        
Run Code Online (Sandbox Code Playgroud)

干杯!:)


Siv*_*ish 5

我自己清除了它,方法是将代码从“ onCreateOptionsMenu ”更改为“ OnPrepareOptionsMenu ”。此外,建议在清除或膨胀菜单之前调用Super 类

谢谢大家。