关于Menu的简单使用,大致概括为Menu的创建,和Item的监听事件。
目录
1.Item的创建
菜单的响应事件
首先我们打开Android Studio新建一个项目。
输入项目名点击Finish。
切换为项目工程
点击ok,再鼠标右击,新建一个Resource File 点击ok
创建完成之后我们打开刚刚新建的 main 去写item标签。
这里我们创建两个 item 标签,先不管其内容。
这个时候你点击运行模拟器,但是你会发现在 Test 这个活动中并没有出现图中所示的菜单栏。当然这上面只是教你如何创建,想要在活动中显示出来,需要回到 MainActivity 里面重写 onCreateOptionsMenu() 方法, 重写方法可以使用 Ctrl + o 快捷键(Mac 系统是 control+ o)如下图
在onCreateOptionsMenu()中输入以下代码
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
通过 getMenuInflater() 方法能够得到 MenuInflater 对象,再调用它的 inflate() 方法就可以给当前活动创建菜单了。inflate() 方法接受两个参数,第一个参数用于指定我们通过哪一个资源文件来创建菜单,这里当然传入 R.menu.main。 第二个参数用于指定我们的菜单项将添加到哪一个 menu 对象当中,这里直接使用 onCreateOptionsMenu() 方法传入的 menu 参数。然后这个方法返回 true ,表示允许创建的菜单显示出来, 如果返回了 false, 创建的菜单将无法显示。
这个时候再点击运行在 Mian 活动界面就会出现菜单栏
这个时候我们先再建一个活动
为了区分这两个活动,给这两个活动加上 TextView 。
下面定义菜单的响应事件。在 MainActivity 中重写 onOptionsItemSelected() 方法
public boolean onOptionsItemSelected(MenuItem item)
{
Intent intent = null;
switch (item.getItemId())
{
case R.id.First_item:
Toast.makeText(this,"You clicked first item",Toast.LENGTH_SHORT).show();
break;
case R.id.Sce_item:
intent = new Intent(MainActivity.this, FirstActivity.class);
Toast.makeText(this,"You clicked second item",Toast.LENGTH_SHORT).show();
break;
default:
}
startActivity(intent);
return true;
}
这个时候我们在点击运行模拟器,貌似第一个 item 出了一点小问题,我们点击第二个按钮,我们就会到 First 活动里面了 。
当然,你要是想在 First 活动中添加菜单,你需要把对应的代码加入到 FirstActivity 里面。
最后我们来解决那个第一个 item 点击出现闪退的问题,先放下对应的代码图片。
可以看到,在 switch case 里面我们有两个语句,这两个语句,只有一个用到了 intent 语句,但是在 switch case 执行之后,我们都执行了 startActivity(intent) ,但是对于第一种情况,当你给First_item 的响应时间并没有涉及到 intent 。所以代码改成以下代码。
public boolean onOptionsItemSelected(MenuItem item)
{
Intent intent = null;
boolean flag = true;
switch (item.getItemId())
{
case R.id.First_item:
Toast.makeText(this,"You clicked first item",Toast.LENGTH_SHORT).show();
flag = false;
break;
case R.id.Sce_item:
intent = new Intent(MainActivity.this, FirstActivity.class);
Toast.makeText(this,"You clicked second item",Toast.LENGTH_SHORT).show();
break;
default:
}
if(flag)
{
startActivity(intent);
flag = false;
}
return true;
}
这个时候,我们再点击运行。结果如下:
文章部分来自 《第一行代码》 第 2 版 郭 霖 著 本文只是将在写app时遇到的一点小问题,同书上的内容结合以下,想要学习 Andriod 开发这里极力推荐《一行代码》。由于本人目前是一名大二的蒟蒻学生,所以如有出错或不当请多多包涵,多多指教。