Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
0
Help us understand the problem. What is going on with this article?
@fang8823

Android StudioOverflow menuを作る

More than 1 year has passed since last update.

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
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
fang8823
プログラミング初心者です。JAVAを中心にAndroid studio・Springなどを勉強しています。 台湾人です。日本語の練習も兼ねていろいろとこちらでノートしたりします。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
0
Help us understand the problem. What is going on with this article?