2013-07-01 25 views
11

Ho una barra delle azioni che mette tutto in un menu in alto a destra, che l'utente fa clic e le opzioni del menu si aprono.elemento di menu della barra delle azioni onclick?

ho gonfiare il menu del bar azione con questo su ogni attività Io lo uso:

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

     return true; 
    } 

E il mio XML per main2.xml è:

<menu xmlns:android="http://schemas.android.com/apk/res/android" > 

    <item 
     android:id="@+id/action_searchHome" 
     android:orderInCategory="100" 
     android:showAsAction="never" 
     android:title="Seach"/> 



</menu> 

La mia domanda è metto un onclick nell'elemento in xml e, in caso affermativo, dove inserisco il metodo onclick che chiama? Devo metterlo in tutte le attività in cui lancio questa barra delle azioni?

+4

Penso che potrebbe essere alla ricerca di [onOptionsItemSelected] (https://developer.android.com/reference/android/app/Activity.html#onOptionsItemSelected (android.view.MenuItem)) – adneal

+0

Controlla il mio commento sotto risposta Eghdk, http://stackoverflow.com/questions/17396870/actionbar-menu-item-onclick#comment-25260264 – LuckyMe

risposta

29

Se si aggiunge un attributo onClick sulla voce di menu in questo modo:

<menu xmlns:android="http://schemas.android.com/apk/res/android" > 

    <item 
     android:id="@+id/action_searchHome" 
     android:orderInCategory="100" 
     android:showAsAction="never" 
     android:onClick="doThis" 
     android:title="Seach"/> 



</menu> 

Poi nella vostra attività:

public void doThis(MenuItem item){ 
    Toast.makeText(this, "Hello World", Toast.LENGTH_LONG).show(); 
} 

Nota:

ActionBarSherlock è deprecato. A meno che non si stia sviluppando un'applicazione per Android 4.0 o precedente, si prega di non utilizzarla. Ma se si utilizza la libreria, si dovrà importare

import com.actionbarsherlock.view.MenuItem;

e non

import com.android.view.MenuItem;

Inoltre, si potrebbe fare qualcosa di simile: ActionBar Sherlock Menu Item OnClick

che @adneal menziona.

+2

No, questo non è il modo di farlo, ' AcitonBars' ha il proprio metodo per gestire i clic. Guarda qui: http://developer.android.com/guide/topics/ui/menus.html#options-menu – LuckyMe

+0

Entrambe le modalità funzionano. Inoltre, ho menzionato il metodo che hai appena elencato alla fine della mia risposta. – EGHDK

+4

Sì, tecnicamente, entrambi possono funzionare, ma un modo è il modo giusto e l'altro è un modo terribile terribile. crea caos e incoerenza nel codice. Per favore, per amore di Dio, non usare mai questo metodo per le voci del Menu. – LuckyMe

0

A mio parere

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    add_btn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      onCreateDialog(getTaskId()); 
     } 
    }); 
} 


<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=".MainActivity"> 
<item android:id="@+id/action_settings" android:title="@string/action_settings" 
    android:orderInCategory="100" app:showAsAction="never" /> 
<item android:id="@+id/add_text_id" android:title="Add" 
    android:icon="@drawable/ic_add_btn" 
    android:orderInCategory="100" app:showAsAction="ifRoom" /> 

Problemi correlati