#menu layoutを作る
まずはres folder->new->Directoryでmenu folderを作る
そしてmenu folder->new->Menu resource file(xml)を作る
#menu layoutを書く
menu layoutのxmlに下記のように(四つの)itemを作る
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/user" android:title="user"/>
<item android:id="@+id/login" android:title="login"/>
<item android:id="@+id/setting" android:title="setting"/>
<item android:id="@+id/logout" android:title="logout"/>
</menu>
#onCreateOptionMenu()でMenuをActivityに産出する
使用者がmenuをタブしたり、Activity.openOptionsMenu()をコールされたりするとonCreateOptionMenu(Menu menu)が呼び出されるらしいです。
AndroidからmenuのLayout情報をmenuとしてパスし、それをparentにして、item情報の入ったxmlをinflateし、もう一度menuを突っ込んだonCreateOptionMenu()をリターンすればいいようです。
*getLayoutInflator(x)getMenuInflator(O)
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_overflow,menu);
return super.onCreateOptionsMenu(menu);
}
ここまですると、すでにmenuができてるはずです。ただし、itemをタブしても反応はしません。
#onOptionsItemSelected()
このmethodで各itemの反応を簡単に設定します。MenuItemのitemで使用者がタブしたitemのIdをgetItemId()で取得し、R.id.itemIdと照らし合わせ、反応を設定します。
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
switch (item.getItemId())
{
case R.id.user:
Toast.makeText(this,"user_activity",Toast.LENGTH_SHORT).show();
return true;
case R.id.login:
Toast.makeText(this,"user_login",Toast.LENGTH_SHORT).show();
return true;
case R.id.setting:
Toast.makeText(this,"user_setting",Toast.LENGTH_SHORT).show();
return true;
case R.id.logout:
Toast.makeText(this,"user_logout",Toast.LENGTH_SHORT).show();
return true;
//defalt will return false if none of the case is meet
default:
return super.onOptionsItemSelected(item);
}
}
以上は現時点の覚書です。