Android Menu菜单

1 menu 创建

  1. 资源文件并创建布局

在这里插入图片描述

  1. 添加菜单选项
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:id="@+id/add_item"
        android:title="添加"
        />
    <item
        android:id="@+id/del_item"
        android:title="删除"/>
    <item
        android:id="@+id/modify_item"
        android:title="修改" />
    <item
        android:id="@+id/quit_app"
        android:title="退出" />
</menu>

在这里插入图片描述

2 在UI线程中创建并指定点击事件

  1. public boolean onCreateOptionsMenu(Menu menu)
  • 要创建选项菜单,就需要重写该方法,在方法中对menu对象进行操作
  • 系统创建选项菜单时调用的方法,参数menu就是Activity的选项菜单对象,返回值为true表示需要显示菜单,否则菜单不显示
// 1. 显示菜单, 重写OnCreateOptionMenu

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // 获得当前菜单对象, 加载布局文件
    getMenuInflater().inflate(R.menu.main_menu, menu);
    return true;   // true为显示
}
  1. 点击事件 public boolean onOptionsItemSelected(MenuItem item)

item参数是被单击的菜单项,返回值:

  • 如果任务全部已经处理完,则返回true
  • 如果希望将菜单项点击的事件传递下去,继续触发其他处理,则返回false
  • 如果采用 return super.onOptionsItemSelected(item);则返回值为flase,即系统缺省返回flase
// 2. 为菜单增加响应事件
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {

    // 使用item的id判断哪一个被点击
    switch(item.getItemId()) {
        case R.id.add_item :
            Toast.makeText(MainActivity.this, "点击了添加按钮", Toast.LENGTH_SHORT).show();
            break;
        case R.id.del_item :
            Toast.makeText(MainActivity.this, "点击删除按钮", Toast.LENGTH_SHORT).show();
            break;
        case R.id.modify_item:
            Toast.makeText(MainActivity.this, "点击了修改按钮", Toast.LENGTH_SHORT).show();
            break;
        case R.id.quit_app:
            finish();
            break;
        default:
            // 暂不处理

    }
    return true;
}

UI代码

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

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

    // 1. 显示菜单, 重写OnCreateOptionMenu

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // 获得当前菜单对象, 加载布局文件
        getMenuInflater().inflate(R.menu.main_menu, menu);
        return true;   // true为显示
    }

    // 2. 为菜单增加响应事件
    @Override
    public boolean onOptionsItemSelected(@NonNull MenuItem item) {

        // 使用item的id判断哪一个被点击
        switch(item.getItemId()) {
            case R.id.add_item :
                Toast.makeText(MainActivity.this, "点击了添加按钮", Toast.LENGTH_SHORT).show();
                break;
            case R.id.del_item :
                Toast.makeText(MainActivity.this, "点击删除按钮", Toast.LENGTH_SHORT).show();
                break;
            case R.id.modify_item:
                Toast.makeText(MainActivity.this, "点击了修改按钮", Toast.LENGTH_SHORT).show();
                break;
            case R.id.quit_app:
                finish();
                break;
            default:
                // 暂不处理

        }
        return true;
    }
}
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值