このスクリーンショットのように、例の右側のアクションバーにボタンを追加したい:
私は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;
}
ボタンを追加するにはどうすればよいですか?
res/menu,
override 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;
}
_
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;
}
_
@Blackbeltに感謝します!メニューを拡張するための新しいメソッドシグネチャは次のとおりです。
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.my_meny, menu);
}