【ActivityGroup】中按键监听失灵!

转载 2013年12月04日 18:29:27

很多朋友都用ActivityGroup 来做底部菜单吧~

我也觉得这个控件很好,自由性比tab好很多。但是确实发现了很多问题:

 

1.子页面activity的menu不显示。(子页面的按键监听无输出,所以其他按键也无效!)

2. 子页面默认wrap_content布局,无法设置为fill_parent!需根据页面大小动态设置!(这里参考另一篇:http://androidturing.iteye.com/blog/1258839

3.子页面中的ListView的getView()方法被重复调用多次!导致性能下降。(同样参考:http://androidturing.iteye.com/blog/1258839

之前第二个问题已经解决,第三个问题是由于第二个问题中 子页面纵向布局为wrap_content而引起的!

 

今天发现并解决了第一个bug,在activitygroup加上这个:

 

Java代码  收藏代码
  1. @Override  
  2.    public boolean onKeyUp(int keyCode, KeyEvent event) {  
  3.         
  4.        if(keyCode==KeyEvent.KEYCODE_MENU) {  
  5.             
  6.            this.getLocalActivityManager().getCurrentActivity().openOptionsMenu();  
  7.        }else if(keyCode == KeyEvent.KEYCODE_BACK){  
  8.             
  9.            finish();//可换用自己的退出提示  
  10.        }  
  11.         
  12.        return super.onKeyDown(keyCode, event);  
  13.    }  
Java代码  收藏代码
  1. @Override  
  2.    public boolean onKeyUp(int keyCode, KeyEvent event) {  
  3.         
  4.        if(keyCode==KeyEvent.KEYCODE_MENU) {  
  5.             
  6.            this.getLocalActivityManager().getCurrentActivity().openOptionsMenu();  
  7.        }else if(keyCode == KeyEvent.KEYCODE_BACK){  
  8.             
  9.            finish();//可换用自己的退出提示  
  10.        }  
  11.         
  12.        return super.onKeyDown(keyCode, event);  
  13.    }  

 

ActivityGroup中监听返回按键

如果你想使用ActivityGroup来统一管理Activity的话,当然首先这是一种很好的方法,但是如果你想在ActivityGroup里面拦截返回按键来进行统一管理的话,直接覆写onKeyDown方法是行不通的了哦,但是你可以覆写dispatchKeyEvent方法来实现,例如,现在我点击返回按钮要提示是否退出程序,代码如下:

@Override  
 public boolean dispatchKeyEvent(KeyEvent event) {  
 if (event.getKeyCode() == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_UP) {  
 AlertDialog.Builder builder = new AlertDialog.Builder(this);  
 builder.setTitle("提示");  
 builder.setMessage("您确定要退出吗?");  
 builder.setPositiveButton("退出",  
 new DialogInterface.OnClickListener() {  
   
 @Override  
 public void onClick(DialogInterface dialog, int which) {  
 // 退出程序  
 Intent exitIntent = new Intent(Intent.ACTION_MAIN);  
 exitIntent.addCategory(Intent.CATEGORY_HOME);  
 startActivity(exitIntent);  
 YeedoUIActivity.this.finish();  
 }  
 });  
 builder.setNegativeButton("取消", null);  
 builder.show();  
 return true;  
 }  
 return super.dispatchKeyEvent(event);  
 }


相关文章推荐

【从头学android】第二个程序同一个Activity中,切换布局时监听器失效解决方法1

1.java程序 /** * */ package com.itest; import android.app.Activity; import android.os.Bundle; imp...

AndroidManifest.xml文件详解(activity)(三)

android:launchMode 这个属性定义了应该如何启动Activity的一个指令。有四种工作模式会跟Intent对象中的Activity标记(FLAG_ACTIVITY_*常量)结合在一起...

mac笔记本部分按键失灵

刚买3个月的mac air,2015版的。 系统10.12 描述:原本电脑很正常的,因为硬盘买的128g的,今天查看存储空间消耗大很快,于是想到要删一些东西。先是清了废纸篓,然后进入关于本机--》存储...

Windows 8/8.1 下,键盘按键后,鼠标左键短暂失灵问题

百度了一下,有不少网友遇到过这个问题 问题详情是这样的: 比如我们在桌面按了一下F5,刷新了一次,紧接着单击一个东西(或者按住鼠标,选中一个区域) 你会发现没有点击成功,...
  • maxsky
  • maxsky
  • 2014年06月18日 00:56
  • 3779

BT手柄按键失灵的问题(1)

某些Input设备(应该是扫描按键设备),进入到MboxSetting的重显率Activity之后,返回/确定按键失效 。各位帮忙看下。 从getevent来跟踪, 按下手柄的确定键,也就是说按次...
  • koffuxu
  • koffuxu
  • 2014年06月18日 20:17
  • 2144

关于activitygroup和子activity之间的事件监听

昨天发现一个问题,是当我用ActivityGroup实现多activity跳转的时候用户按下back键直接从子activity退出应用,没 有响应到activitygroup的onkeydown事件....
  • gxx1991
  • gxx1991
  • 2012年04月09日 13:52
  • 445

监听BACK按键

  • 2014年04月20日 11:41
  • 227KB
  • 下载

通过AccessibilityService实现系统按键监听

真是孤陋寡闻了,一直只知道android的辅助功能,竟然不知道还有辅助类存在可以帮助第三方监听系统事件。查阅网上几乎跟AccessibilityService有关的应用都是跟微信抢红包有关系,而我这本...

Home与返回按键监听Demo

  • 2015年12月30日 11:20
  • 1.7MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【ActivityGroup】中按键监听失灵!
举报原因:
原因补充:

(最多只允许输入30个字)