Je souhaite ajouter un bouton à la barre d'actions à droite de l'exemple, comme dans cette capture d'écran:
Je reçois actionBar dans la méthode onCreate en tant que:
ActionBar actionBar = getActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
et le 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 un bouton?
vous devez créer une entrée dans res/menu,
override onCreateOptionsMenu
et la 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>
Une activité remplit la barre d’action dans sa méthode onCreateOptionsMenu()
.
Au lieu d'utiliser setcustomview()
, substituez simplement onCreateOptionsMenu
comme ceci:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.mainmenu, menu);
return true;
}
Si une action dans la barre d'actions est sélectionnée, la méthode onOptionsItemSelected()
est appelée. Il reçoit l'action sélectionnée en paramètre. En fonction de ces informations, votre 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;
}
Merci à @Blackbelt! La nouvelle signature de méthode pour gonfler le menu est la suivante:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.my_meny, menu);
}