如何在ActionBar(Android)中添加按钮?

时间:2013-07-02 12:32:15

标签: android button android-actionbar

我想将一个按钮添加到示例右侧的操作栏中,如此屏幕截图所示:

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

我在onCreate方法中获取actionBar为:

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

和后退按钮(onOptionsItemSelected方法)如下:

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

如何添加按钮?

3 个答案:

答案 0 :(得分:78)

您必须在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>

答案 1 :(得分:17)

活动会在其onCreateOptionsMenu()方法中填充ActionBar。

而不是使用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;
}

答案 2 :(得分:0)

感谢@Blackbelt!用于给菜单充气的新方法签名是:

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