Android 操作栏上的选项菜单显示重复图标
Android Options Menu on Action bar shows duplicate icons
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);
}
这是我的 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>
截图如下:
1:第一次:
enter image description here
2:正常:
enter image description here
注意:当应用程序打开并打开导航栏时会出现问题,否则它可以正常工作。始终调用 createoptionsmenu,但仍然无法正常工作。有人可以帮忙吗?
我自己清除了它,方法是将代码从“onCreateOptionsMenu”更改为“OnPrepareOptionsMenu”。此外,建议在清除或扩充菜单之前调用 Super class。
谢谢大家。
更准确地说,这应该可以解决问题:
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);
}
干杯! :)
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);
}
这是我的 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>
截图如下: 1:第一次: enter image description here
2:正常: enter image description here
注意:当应用程序打开并打开导航栏时会出现问题,否则它可以正常工作。始终调用 createoptionsmenu,但仍然无法正常工作。有人可以帮忙吗?
我自己清除了它,方法是将代码从“onCreateOptionsMenu”更改为“OnPrepareOptionsMenu”。此外,建议在清除或扩充菜单之前调用 Super class。
谢谢大家。
更准确地说,这应该可以解决问题:
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);
}
干杯! :)