Как добавить кнопку в ActionBar (Android)?
Я хочу добавить кнопку в панель действий в правой части примера, как показано на этом снимке экрана:
![a screenshot of an actionbar with no buttons. the title is 'Example']()
Я получаю actionBar в методе onCreate как:
ActionBar actionBar = getActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
и обратно (метод onOptionsItemSelected), как показано ниже:
public boolean onOptionsItemSelected(MenuItem item){
Intent myIntent = new Intent(getApplicationContext(),MainActivity.class);
startActivityForResult(myIntent, 0);
return true;
}
Как добавить кнопку?
Ответы
Ответ 1
вам нужно создать запись внутри res/menu,
переопределить onCreateOptionsMenu
и раздуть ее
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.yourentry, menu);
return true;
}
запись для меню может быть:
<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>
Ответ 2
Активность заполняет ActionBar в методе onCreateOptionsMenu()
.
Вместо использования setcustomview()
просто переопределите onCreateOptionsMenu
следующим образом:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.mainmenu, menu);
return true;
}
Если выбраны действия в ActionBar, вызывается метод onOptionsItemSelected()
. Он принимает выбранное действие в качестве параметра. Основываясь на этой информации, вы можете решить, что делать, например:
@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;
}
Ответ 3
Благодаря @Blackbelt! Новая сигнатура метода для раздувания меню такова:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.my_meny, menu);
}