【Android-Activity】设置菜单(一级菜单、二级菜单),并实现菜单的点击事件

本文主要来介绍如何实现菜单的功能,包括一级菜单、二级菜单的实现步骤即点击事件的处理:

实现效果:
【Android-Activity】设置菜单(一级菜单、二级菜单),并实现菜单的点击事件_第1张图片

1、在res下面创建一个menu文件,用于存放资源文件

【Android-Activity】设置菜单(一级菜单、二级菜单),并实现菜单的点击事件_第2张图片
写一级菜单:
【Android-Activity】设置菜单(一级菜单、二级菜单),并实现菜单的点击事件_第3张图片如果要实现二级菜单的话就在标签中嵌套一个menu标签即可:
【Android-Activity】设置菜单(一级菜单、二级菜单),并实现菜单的点击事件_第4张图片

2、在.java中复写onCreateOptionsMenu方法

该方法的作用是用来加载菜单条目的!所以不能忘记!!!
获取到刚刚的.xml文件
【Android-Activity】设置菜单(一级菜单、二级菜单),并实现菜单的点击事件_第5张图片

此时运行的话就可以看到菜单了!效果如下:

【Android-Activity】设置菜单(一级菜单、二级菜单),并实现菜单的点击事件_第6张图片

但是一般点击菜单都会跳转到其他界面上去,需要对菜单条目设置点击事件,此处模拟打印出一个Toast作为效果:

实现点击事件

一般来说都会有好几个菜单条目,需要对具体点击的那个条目设置点击事件,所以这里一般使用 if—else if 或者 switch—case 方法来对点击行为进行一个判断,此处以switch-case为例:
【Android-Activity】设置菜单(一级菜单、二级菜单),并实现菜单的点击事件_第7张图片

当然也可以将Toast抽成一个类来使用,看上去就更加简洁了:
【Android-Activity】设置菜单(一级菜单、二级菜单),并实现菜单的点击事件_第8张图片

实现效果:
【Android-Activity】设置菜单(一级菜单、二级菜单),并实现菜单的点击事件_第9张图片

源码:

menu/menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:title="A"
    android:id="@+id/a_part">
        <menu>
            <item android:title="A.A"
                android:id="@+id/a_a_part"/>

            <item android:title="A.B"
                android:id="@+id/a_b_part"/>
        </menu>
    </item>

    <item android:title="B"
        android:id="@+id/b_part">
        <menu>
            <item android:title="B.A"
                android:id="@+id/b_a_a_part"/>

            <item android:title="B.B"
                android:id="@+id/b_b_part"/>

        </menu>
    </item>

    <item android:title="C"
        android:id="@+id/c_part"/>

</menu>

MenuActivity .java

public class MenuActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_menu);
    }

    /**
     * 加载菜单条目
     *
     * @param menu
     * @return
     */
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu, menu);
        return super.onCreateOptionsMenu(menu);
    }

    /**
     * 实现菜单的点击事件
     *
     * @param item
     * @return
     */
    @Override
    public boolean onOptionsItemSelected(@NonNull MenuItem item) {
        int itemId = item.getItemId();
        switch (itemId) {
            case R.id.a_part:
                Toast.makeText(this, "the item is " + item.getTitle(), Toast.LENGTH_SHORT).show();
                break;
            case R.id.a_a_part:
                Toast.makeText(this, "the item is " + item.getTitle(), Toast.LENGTH_SHORT).show();
                break;
            case R.id.a_b_part:
                Toast.makeText(this, "the item is " + item.getTitle(), Toast.LENGTH_SHORT).show();
                break;
            case R.id.b_part:
                Toast.makeText(this, "the item is " + item.getTitle(), Toast.LENGTH_SHORT).show();
                break;
            case R.id.b_a_a_part:
                Toast.makeText(this, "the item is " + item.getTitle(), Toast.LENGTH_SHORT).show();
                break;
            case R.id.b_b_part:
                new ToastUtil().showMsg(this,"the item is "+item.getTitle());
                break;
            case R.id.c_part:
                new ToastUtil().showMsg(this,"the item is "+item.getTitle());
                break;

        }
        return super.onOptionsItemSelected(item);
    }

    public class ToastUtil {
        public Toast mToast;
        public void showMsg(Context context, String msg){
            if(mToast==null){
                mToast=Toast.makeText(context,msg,Toast.LENGTH_SHORT);
            }else{
                mToast.setText(msg);
            }
            mToast.show();
        }
    }
}

你可能感兴趣的:(Android学习,#,activity)