para - popup menu android studio




Los elementos del menú siguen agregando cada botón de menú presione (2)

He agregado dos elementos del menú. Ambos funcionan bien, pero cada vez que presiono el botón de menú aparecen nuevos elementos de menú al lado del anterior. Como abajo puedes ver

a continuación es mi elemento de menú 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>

y aquí está mi código

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

por favor ayuda donde estoy equivocado?

Lo siento, esto llegará a ser largo, pero tengo una segunda pregunta

2) Mi segunda pregunta tengo otro menú. xml en el que hay icono de compartir en lugar de icono de búsqueda, pero cuando intento mostrar en la barra de acciones con el mismo elemento de menú de código no aparece en la barra de acciones. a continuación está mi otro menú 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> 

y su código

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

Prueba esto

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

utiliza menu.clear ()


Lo mejor que puedes hacer es como esto:

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

si solo tienes un menú A continuación, configure el menú desde la página Actividad y devuelva el valor verdadero, luego no es necesario borrar el menú. y no aparecerá ningún menú duplicado.

Pero si usa dos fragmentos y tiene que cambiar el menú de actividad según el fragmento, solo necesita borrar el menú y restablecerlo con uno nuevo.

Y si está usando onCreateOptionsMenu (Menú menu) en fragmento, elimínelos.





menuitem