Android学习实践:5.菜单与对话框,系统信息及结束进程

本文介绍如何在Android应用中实现自定义菜单,包括定义菜单项、处理菜单点击事件及响应操作。通过具体步骤演示如何创建菜单资源文件、设置菜单项属性,并在MainActivity中处理不同菜单项的点击事件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 打开res/values/strings.xml,加入显示菜单所需要的字符串:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">Demo1</string>
    <string name="hello_world">Hello world!</string>
    <string name="action_settings">设置</string>
    <string name="action_about">关于</string>
    <string name="action_exit">退出</string>
    <string name="action_openactivity">打开另一个</string>
    <string name="action_phoneCall">打电话</string>
    <string name="action_sendSMS">发短信</string>
</resources>


打开res/menu/main.xml,加入菜单项:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context="com.example.demo1.MainActivity" >

    <item
        android:id="@+id/action_settings"
        android:orderInCategory="100"
        android:title="@string/action_settings"
        app:showAsAction="never"/>
    <item
        android:id="@+id/action_about"
        android:orderInCategory="100"
        android:title="@string/action_about"
        app:showAsAction="never"/>
    <item
        android:id="@+id/action_exit"
        android:orderInCategory="100"
        android:title="@string/action_exit"
        app:showAsAction="never"/>            
</menu>


打开MainActivity.java,修改onOptionItemSelected方法:

	@Override
	public boolean onOptionsItemSelected(MenuItem item)
	{
		// Handle action bar item clicks here. The action bar will
		// automatically handle clicks on the Home/Up button, so long
		// as you specify a parent activity in AndroidManifest.xml.
		int id = item.getItemId();
		if (id == R.id.action_settings)
		{
			return true;
		}
		switch(id)
		{
		case R.id.action_about:
			StringBuilder sb=new StringBuilder();
			sb.append("手机型号:".concat(android.os.Build.MODEL).concat("\n"));
			sb.append("SDK版本:".concat(Integer.toString(android.os.Build.VERSION.SDK_INT)).concat("\n"));
			sb.append("系统版本:".concat(android.os.Build.VERSION.RELEASE).concat("\n"));
			sb.append("源码控制版本:".concat(android.os.Build.VERSION.INCREMENTAL).concat("\n"));
			AlertDialog.Builder builder = new AlertDialog.Builder(this);
			builder.setTitle(R.string.app_name);
			builder.setMessage(sb.toString());
			builder.setPositiveButton("确定",null);
			builder.create().show();
			break;
		case R.id.action_exit:
			android.os.Process.killProcess(android.os.Process.myPid());
			break;
		}
		return super.onOptionsItemSelected(item);
	}

运行后按手机上的菜单键后如下图:



MainActivity.onOptionsItemSelected方法的参数就是当前选中的菜单项,通过item.getItemId()返回菜单项的Id,这个和menu/main.xml中定义的是相对应的。其中,action_exit会响应退出菜单将进程结束,调用了android.os.Process.killProcess(android.os.Process.myPid()),而action_about则响应关于菜单调用对话框来显示系统的部分信息,对话框则使用了AlertDialog.Builder.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

螃蟹就是横着走

感谢您的支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值