每天一点点:android的选项菜单和其子菜单学习笔记

搞了这么多天,终于要开始重新写笔记,以前觉得这个方法实在是很爽,既能搞到下载分,还能督促自己好好学习,天天上网。由于自己自制力不行,加之加之几个寝室里几个狐朋狗友的怂恿和放纵,写着写着就没了,经过前几天的盗号风波,以前的笔记只留了两篇,再次BS不要脸的盗号的。

今天学的是android的选项菜单和它的子菜单,还有view的上下文菜单,由于view的上下文菜单和dialog类似,这里不提了

选项菜单是我们拿着爱机按下menu键时,从地下冒出来的一个小框框,里面显示最多六个按钮,当然自己可以添加很多的,不过只能显示六个在第一级,更不要脸的是menuitem不是从view来的,独立的一个接口,这使得我看了好半天的源代码和文档,擦。

menuitem是 activity里面自带的,要自己定义的时候重写方法Oncreateoptionmenu,这个方法有个menu参数,其实就是地下的小框框的实例啦,然后根据这个menu,你就可以对下面的menuitem进行编程了,oncreateoptionmenu方法是一次性的,当你第一次点击爱机上的menu按钮时,这个方法被调用,调用之后就不会执行第二次了,如果你嫌敲代码麻烦,没关系,创建一个menu的布局文件,这样的话,你就可以直接加载文件,而不用敲那些不要脸的代码了

系统创建一个menu以后,怎么办,上面有按钮啊,不能光看着按钮做事吧,赶紧重写onoptionselectedmenu方法啊,这里会用到一个switch,妹办法,我没有更好的方法了,当然,如果有些按钮的功能相似,不妨建个group,这样可以了,收编管理,事半功倍。

写了一个小练习,在edittext中显示从menu中选中的信息,代码如下:(只写重要部分了)

 public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.boy_or_gril, menu);
    return super.onCreateOptionsMenu(menu);
    }
    @Override
    public boolean onPrepareOptionsMenu(Menu menu) {
    return super.onPrepareOptionsMenu(menu);
    }
    private String str = "\n";
private String xingbie = "";
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
case R.id.boy:
xingbie = item.getTitle().toString();
item.setChecked(item.isChecked());
break;
case R.id.grid:
xingbie = item.getTitle().toString();
item.setChecked(item.isChecked());
break;
case R.id.swimming:
str = str + "爱好:游泳\n";
item.setChecked(!item.isChecked());
break;
case R.id.singing:
str = str + "爱好:唱歌\n";
item.setChecked(!item.isChecked());
break;
case R.id.IT:
str = str + "爱好:编程";
item.setChecked(!item.isChecked());
break;
case R.id.item3:
edittext.setText(xingbie+str);
break;
default:
break;
}
    return super.onOptionsItemSelected(item);

    }

有问题的是多选项,没有判定是否选定的情况下来添加字符串

有点纠结,只能悄悄的搞

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值