每次按下菜单按钮时,菜单项都会不断添加
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) 然后删除它们。
我添加了两个菜单项。它们都很好用,但每当我按下菜单按钮时,新菜单项就会出现在旧菜单项旁边。就像下面你可以看到
下面是我的菜单项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) 然后删除它们。