Подтвердить что ты не робот

Как добавить кнопку в 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;
}

Как добавить кнопку?

4b9b3361

Ответ 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);
}