このスクリーンショットのように、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;
}
メニューのエントリは次のようになります:
<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>
アクティビティは、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;
}