一般Activity中监听返回键,都是重写onKeyDown(int keyCode, KeyEvent event)方法对手机按键进行监听,
而当要监听的Activity为TabActivity时(其实ListActivity也一样),这个方法并不起作用。
下面是解决办法:
正在开发的应用的首页是一个TabActivity,当用户按下返回键时会退出程序,想退出到后台看home键,还不是销毁。
- 常规方法像上文说的重写onKeyDown(int keyCode, KeyEvent event),根本不起作用;
- 又发现SDK2.0以后新增了一个专门针对返回键的方法onBackPressed(),还是不起作用。
现有一个dispatchKeyEvent(KeyEvent event)果然管用
下面是一段示例代码,返回键 实现home键的功能,类似QQ的功能:
public boolean dispatchKeyEvent(KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN
&& event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
Intent setIntent = new Intent(Intent.ACTION_MAIN);
setIntent.addCategory(Intent.CATEGORY_HOME);
setIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(setIntent);
}
return super.dispatchKeyEvent(event);
}
注意:
if判断中要加一个event.getAction() == KeyEvent.ACTION_DOWN判断,
因为按键有两个事件ACTION_DOWN和ACTION_UP,也就是按下和松开,如果不加这个判断,代码会执行两遍。
<pre name="code" class="java">