2013-07-02 6 views
24

Je veux ajouter un bouton à la barre d'action du côté droit de l'exemple comme dans ce plan d'écran:Comment ajouter un bouton dans ActionBar (Android)?

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

Je me actionbar dans la méthode onCreate comme:

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

et bouton retour (méthode onOptionsItemSelected) comme ci-dessous:

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

Comment puis-je ajouter le bouton?

Répondre

72

vous devez créer une entrée à l'intérieur res/menu, override onCreateOptionsMenu et gonfler

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

une entrée pour le menu pourrait être:

<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 je ne comprends pas l'utilisation de orderInCategory et sa valeur 100. – Ponting

+0

Il est un entier qui représentent l'ordre de « l'importance » de la élément, au sein d'un groupe. Vous pouvez le changer. Tant que vous avez un ou deux éléments dans le menu, cela ne fait pas de différence. vous pouvez lire à ce sujet [ici] (http://developer.android.com/guide/topics/resources/menu-resource.html) – Blackbelt

+0

Merci.Maintenant, une autre question est que j'ajoute ce menu dans une autre activité, mais montrent différents bouton au lieu de this.So comment puis-je faire cela? – Ponting

14

Une activité renseigne le ActionBar dans sa méthode onCreateOptionsMenu().

Au lieu d'utiliser setcustomview(), juste passer outre onCreateOptionsMenu comme ceci:

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

Si une action dans le ActionBar est sélectionné, la méthode onOptionsItemSelected() est appelée. Il reçoit l'action sélectionnée en paramètre. Sur la base de ces informations, le code peut décider quoi faire par exemple:

@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

Grâce à @Blackbelt! La nouvelle signature de la méthode pour gonfler le menu est le suivant:

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