Android项目点击系统菜单项失效

来源:互联网 发布:淘宝买家信誉怎么查询 编辑:程序博客网 时间:2024/06/05 08:47


      今天在做一个小的Android案例,需要使用系统菜单键来进行一些的相关的设置,但是吧,在小案例做完之后,发现系统菜单无论如何点击都没有效果(系统菜单列表不显示)。


     系统菜单的设置及点击事件的响应代码如下:(写出来是为了让大家看一下这一坨代码是没有问题的)

     

@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// 四个参数的含义:组,id编号,出现顺序,显示名称// 更换聊天背景的系统菜单按钮menu.add(1, 1, 1, "聊天背景");// 注销登陆的系统菜单menu.add(2, 2, 5, "退出");return super.onCreateOptionsMenu(menu);}// 菜单项的单击事件@Overridepublic boolean onOptionsItemSelected(MenuItem item) {switch (item.getItemId()) {// 1就是点击更改聊天背景按键case 1:// StartActivityForResult 启动一个新的Activity并得到它的回传值Intent intent = new Intent(ChatActivity.this,ChangeBgActivity.class);startActivityForResult(intent, 1994);break;// 2就是点击退出的按键case 2://点击退出后,弹出提示框AlertDialog.Builder builder=new AlertDialog.Builder(ChatActivity.this);builder.setTitle("提示").setMessage("确定注销登陆?").setPositiveButton("确定",new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// 注销当前登陆,返回到登陆界面(清除原偏好设置内的登陆信息)editor.putString("User", "null");editor.commit();Intent i=new Intent(ChatActivity.this,MainActivity.class);startActivity(i);finish();}}).setNegativeButton("取消", null).create().show();break;}return true;}

   然而吧,点击就是没有反应,也是醉了。。。

   后来呢,我又发现了它~一个隐藏的挺深的家伙:

   

//按两次返回键,退出登录private long lastTime=new Date().getTime();@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {if (keyCode==KeyEvent.KEYCODE_BACK) {if (System.currentTimeMillis()-lastTime<1000) {finish();}else {lastTime=System.currentTimeMillis();Toast.makeText(ChatActivity.this, "再按一次返回键退出应用~", Toast.LENGTH_LONG).show();}}return true;}

    上面一段代码的用意大家都很明白的,无非就是设置两次返回键后退出 当前应用,关键就在于  return true ; 这句话上,它表示点击后把菜单键的点击事件消费掉,不再让其往上进行传递,而也就是在这里,阻止了系统菜单键的点击生效。


     于是乎,把两次返回键退出登录代码段中的返回值改为false后,系统菜单的点击事件也就可以正常的使用了。


     今天北京的天气非常的冷,一碗热热的鸡汤奉上。   任何的时候,都别轻易难过。该来的总会来,但是没有永远过不去的坎,只要你努力了,把自己变得更好,那其他的一切也就不用担心了,他们自然也会变得更好。 送给在寒冬中,依然努力奋斗的我们。

      

   

     

0 0
原创粉丝点击