LoginSignup
0
0

More than 3 years have passed since last update.

Android StudioOverflow menuを作る

Last updated at Posted at 2019-10-05

menu layoutを作る

まずはres folder->new->Directoryでmenu folderを作る
そしてmenu folder->new->Menu resource file(xml)を作る

menu layoutを書く

menu layoutのxmlに下記のように(四つの)itemを作る

menu_overflow.xml
<?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)

MainActivity.java

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_overflow,menu);
        return super.onCreateOptionsMenu(menu);
    }

ここまですると、すでにmenuができてるはずです。ただし、itemをタブしても反応はしません。
image.png

onOptionsItemSelected()

このmethodで各itemの反応を簡単に設定します。MenuItemのitemで使用者がタブしたitemのIdをgetItemId()で取得し、R.id.itemIdと照らし合わせ、反応を設定します。

MainActvity.java
@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);

        }

    }

以上は現時点の覚書です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0