最近在做一个东西用到了各个activity之间进行数据传递,但其中用的东西对我来说也都是新的,所以把一个东西拆开写,一方面备忘,另一方面可能有些人也用得到,我也会把其中遇到的坑也写一下。
整个这个demo一共包含以下几部分:
1、optionmenu;
2、activity之间跳转;
3、radiobutton android:checked="true"(选中);
4、edittext cityID.setVisibility(EditText.VISIBLE)(设定可见);
5、switch;
6、各activity之间数据传送。
今天先写第一部分:选项菜单(optionmenu)
加载菜单有两种方法,
1、编写菜单XML文件,调用: getMenuInflater().inflate(R.menu.menu_main, menu);加载菜单 2、通过代码动态添加,onCreateOptionsMenu的参数menu,调用add方法添加 菜单,add(菜单项的组号,ID,排序号,标题)。
关键步骤是重写两个方法:
- public boolean onCreateOptionsMenu(Menu menu):调用OptionMenu,在这里完成菜单初始化
- public boolean onOptionsItemSelected(MenuItem item):菜单项被选中时触发,这里完成事件处理
详细操作:
1、res目录上右键新建,选择资源文件
2、再在资源类型中选择menu,文件夹名称自动变成menu。
3、在menu上右键,新建一个菜单资源文件。
4、编辑xml文件。示例代码如下:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:title="设置"
android:id="@+id/setting"/>
<item
android:title="保存"
android:icon="@mipmap/ic_launcher"
android:id="@+id/save"/>
</menu>
5、MainActivity.java(全屏是:Fullscreenactivity.java)重写两方法:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
//加载资源菜单
getMenuInflater ().inflate (R.menu.menu,menu); //第一个参数是创建的menu的名字
return true; //要return true 才会显示
}
//选中Menu时触发事件
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId ()){ //获取Id
case R.id.save:
Toast.makeText (this,"保存成功",Toast.LENGTH_LONG).show ();
break;
case R.id.setting:
Toast.makeText (this,"设置",Toast.LENGTH_LONG).show ();
break;
}
return super.onOptionsItemSelected (item);
}
模拟器显示结果: