0

панель инструментов (панель инструментов) на Android имеет 3 меню параметров. Его работа прекрасна. Но проблема в том, когда я удаляю и переустанавливаю это дублирование пункта меню. Также Название также остается таким же, но не меняется. иногда, скажем, если мы закрываем приложение и перезапускаем его рабочий штраф. Я совершенно смущен и поражен.Меню Android Options на панели действий показывает дубликаты значков

Вот код, 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); 
    } 

Вот мой menu_main.xml:

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
 
    xmlns:tools="http://schemas.android.com/tools"> 
 
    
 
    <item 
 
     android:id="@+id/action_search" 
 
     android:icon="@android:drawable/ic_menu_search" 
 
     app:showAsAction="always" 
 
     app:actionViewClass="android.support.v7.widget.SearchView" 
 
     android:title="Search"/> 
 

 
    <item 
 
     android:id="@+id/action_wishlist" 
 
     android:orderInCategory="300" 
 
     android:title="@string/wishlist" 
 
     app:actionLayout="@layout/actionbar_badge_layout" 
 
     android:icon="@drawable/ic_wishlist_dark" 
 
     app:showAsAction="always"></item> 
 

 
    <item 
 
     android:id="@+id/action_cart" 
 
     android:orderInCategory="300" 
 
     android:title="@string/cart" 
 
     app:actionLayout="@layout/actionbar_badge_cart_layout" 
 
     android:icon="@drawable/ic_cart_dark" 
 
     app:showAsAction="always"></item> 
 
</menu>

Вот Screenshot: 1: первый время: enter image description here

2: нормальное: enter image description here

Примечание: Эта проблема возникает, когда приложение открывается с открытием панели навигации, иначе его работает отлично. На createoptionsmenu называется всегда, но все же его не работает. Кто-нибудь может помочь в этом?

+0

Спасибо за быстрый ответ Майк, но проблема такая же. На самом деле проблема в том, что панель действий не обновляется в первый раз, но она проходит через все функции –

ответ

2

Я отдал его сам, изменяя код от «onCreateOptionsMenu» в «OnPrepareOptionsMenu». Также рекомендуется вызывать Суперкласс перед очисткой или раздуванием меню.

Спасибо за все.

1

Точнее это должно сделать трюк:

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

CHEERS! :)