android log输出keycode,android-活动的onBackPressed方法永远不会被调用

我试图拦截应用程序中的后退按钮事件以实现某些自定义功能,但是我未在相关回调中编写任何内容,并且我一生都无法理解为什么.

这是我重写的方法:

@Override

public void onBackPressed() {

super.onBackPressed();

Log.e(LOG_TAG, "Back pressed");

if (isMainScreenShowing) {

finish();

} else if (isTopLevelScreenShowing){

loadNewScreen(new AccountBalanceInfoFragment());

}

}

@Override

public boolean onKeyDown(int keyCode, KeyEvent event) {

Log.e(LOG_TAG, "Key down = " + keyCode);

return super.onKeyDown(keyCode, event);

}

@Override

public boolean onKeyUp(int keyCode, KeyEvent event) {

Log.e(LOG_TAG, "Key up = " + keyCode);

return super.onKeyDown(keyCode, event);

}

如果有关系,我将其放在一个扩展ActionBarSherlock中的SherlockFragmentActivity的活动中.后退按钮仍可用于从堆栈中弹出先前的片段事务,但是我无法实现自己的自定义功能.

更新:按下后退按钮时,我注意到以下logcat输出:

10-01 16:42:49.879: D/InputEventConsistencyVerifier(7597): KeyEvent: ACTION_UP but key was not down.`

10-01 16:42:49.879: D/InputEventConsistencyVerifier(7597): in com.android.internal.policy.impl.PhoneWindow$DecorView{40cd4198 V.E..... R.....I. 0,0-480,800}

10-01 16:42:49.879: D/InputEventConsistencyVerifier(7597): 0: sent at 68941888000000, KeyEvent { action=ACTION_UP, keyCode=KEYCODE_BACK, scanCode=158, metaState=0, flags=0x8, repeatCount=0, eventTime=68941888, downTime=68941823, deviceId=0, source=0x101 }

因此,由于某些原因未能正确处理按键事件,这对我来说还是个谜.

更新2:由于相关性很高,我也应该将我写的回复复制到SBerg的答案中-

我注意到onKeyUp回调现在似乎正在工作.我不确定自己在做什么.但是,仍然不调用key down和onBackPressed,这很奇怪,但是到目前为止,key up似乎已经足够了.

@Override

public boolean onKeyUp(int keyCode, KeyEvent event) {

if (keyCode == KeyEvent.KEYCODE_BACK) {

Log.i(LOG_TAG, "Back pressed");

// do stuff here

}

return super.onKeyUp(keyCode, event);

}

目前,这是一个合适的解决方法,但是有点混乱,并且理解为什么不调用第一个onBackPressed和onKeyDown回调仍然很高兴.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值