ActionBar(Android)にボタンを追加するには?

このスクリーンショットのように、Exampleの右側にあるアクションバーにボタンを追加したい:

タイトルは 'Example'です]1

として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;
}

どのようにボタンを追加できますか?

ソリューション

res/menuの中にエントリーを作成し、onCreateOptionsMenuをオーバーライドして、それを膨らませる必要があります。

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

メニューのエントリは次のようになります:



解説 (8)

アクティビティは、onCreateOptionsMenu()メソッドでActionBarにデータを入力します。

setcustomview()を使う代わりに、次のようにonCreateOptionsMenu` をオーバーライドします:

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

アクションバーのアクションが選択されると、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;
}
解説 (0)

Blackbelt氏に感謝する!メニューを膨らませる新しいメソッドのシグネチャーはこうだ:

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