按下

时间:2016-08-10 09:50:29

标签: android android-actionbar menuitem

我添加了两个菜单项。它们都很好但每当我按下菜单按钮时,新的菜单项会出现在旧菜单旁边。如下所示你可以看到

enter image description here

下面是我的菜单项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);
}

2 个答案:

答案 0 :(得分:3)

试试这个

@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()

答案 1 :(得分:1)

最好的办法是:

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

如果您只有一个菜单。然后从“活动”页面设置菜单并返回true,然后无需清除菜单。并且不会出现重复的菜单。

但是如果您使用两个片段并且必须根据片段更改活动菜单,则只需要清除菜单并使用新菜单重置它。

如果您在片段中使用onCreateOptionsMenu(菜单菜单),请将其删除。