2013-07-02 15 views
24

Voglio aggiungere un pulsante alla barra delle azioni sul lato destro dell'esempio come in questo screenshot:Come aggiungere pulsante in ActionBar (Android)?

a screenshot of an actionbar with no buttons. the title is 'Example'

ricevo ActionBar nel metodo onCreate come:

ActionBar actionBar = getActionBar(); 
actionBar.setDisplayHomeAsUpEnabled(true); 

e back button (onOptionsItemSelected method) come sotto:

public boolean onOptionsItemSelected(MenuItem item){ 
    Intent myIntent = new Intent(getApplicationContext(),MainActivity.class); 
    startActivityForResult(myIntent, 0); 
    return true; 
} 

Come posso aggiungere il pulsante?

risposta

72

è necessario creare una voce all'interno di override res/menu,onCreateOptionsMenu e gonfiarlo

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.yourentry, menu); 
    return true; 
} 

una voce per il menù potrebbe essere:

<menu xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item 
     android:id="@+id/action_cart" 
     android:icon="@drawable/cart" 
     android:orderInCategory="100" 
     android:showAsAction="always"/> 
</menu> 
+0

Ok.That works.But io non capisco l'uso del orderInCategory e il suo valore come 100. – Ponting

+0

Si tratta di un numero intero che rappresenta l'ordine di "importanza" del oggetto, all'interno di un gruppo. Puoi cambiarlo. Finché hai uno o due elementi nel menu, non fa differenza. puoi leggere a riguardo [qui] (http://developer.android.com/guide/topics/resources/menu-resource.html) – Blackbelt

+0

Grazie. Ora un'altra domanda è che aggiungo questo menu in un'altra attività ma mostro diversi invece di questo. Quindi come posso farlo? – Ponting

14

Un'attività popola l'ActionBar nel suo metodo onCreateOptionsMenu().

Invece di usare setcustomview(), basta ignorare onCreateOptionsMenu come questo:

@Override  
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.mainmenu, menu); 
    return true; 
} 

Se viene selezionato un azioni nel ActionBar, il metodo onOptionsItemSelected() viene chiamato. Riceve l'azione selezionata come parametro. Sulla base di queste informazioni il codice può decidere cosa fare ad esempio:

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
    case R.id.menuitem1: 
     Toast.makeText(this, "Menu Item 1 selected", Toast.LENGTH_SHORT).show(); 
     break; 
    case R.id.menuitem2: 
     Toast.makeText(this, "Menu item 2 selected", Toast.LENGTH_SHORT).show(); 
     break; 
    } 
    return true; 
} 
0

Grazie a @Blackbelt! La nuova firma del metodo per gonfiare il menu è questo:

@Override 
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
     inflater.inflate(R.menu.my_meny, menu); 
} 
Problemi correlati