2017-03-09 1 views
1

Ich habe eine Liste von Menüpunkten in meiner Aktionsleiste. Jeder Klick auf einen Gegenstand sollte eine andere Methode auslösen. Aber onOptionsSetelected wird nie aufgerufen.onOptionsItemSelected nicht aufgerufen

Dies ist, wie die ActionBar in MainActivity definiert:

public class MainActivity extends AppCompatActivity { 
... 
    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.menu_main, menu); 
     return super.onCreateOptionsMenu(menu); 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     int id = item.getItemId(); 
     if (id == R.id.action_settings_1) { 
      //do something 
      return true; 
     } else if (id == R.id.action_settings_2) { 
      //do something 
      return true; 
     } else if (id == R.id.action_settings_1) { 
      //do something 
      return true; 
     } 
     return super.onOptionsItemSelected(item); 
    } 
... 
} 

Dies ist das ActionBar Menü-Layout menu_main:

<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" 
    tools:context="com.example.MainActivity"> 
    <item 
     android:id="@+id/action_settings_1" 
     android:orderInCategory="1" 
     android:title="Item 1" 
     app:showAsAction="never" /> 
    <item 
     android:id="@+id/action_settings_2" 
     android:orderInCategory="2" 
     android:title="Item 2" 
     app:showAsAction="never" /> 
    <item 
     android:id="@+id/action_settings_3" 
     android:orderInCategory="3" 
     android:title="Item 3" 
     app:showAsAction="never" /> 
</menu> 

Wie kann ich die ActionBar so einrichten, dass onOptionsItemSelected aufgerufen wird, wenn ein Actionbar-Element angeklickt?

Antwort

7

In Ihrem onCreateOptionsMenu, geben Sie True zurück, anstatt Super aufzurufen. Das sollte es tun

1

Sie einfach die Änderung wie folgt:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu. menu_main, menu); 
    return true; 
} 
Verwandte Themen