前言
项目中遇见这么一个需求在Fragment中监听返回键,点击返回键的时候做一些处理。
用户点击了返回键时 做一个 支付取消 的Toast 提示
如图:
在Fragment中代码实现
在Fragment的onResume() 的生命周期中做处理
@Override
public void onResume() {
super.onResume();
//Touch模式下不支持焦点,也能够获得焦点使用的
Objects.requireNonNull(getView()).setFocusableInTouchMode(true);
//获取当前view焦点
getView().requestFocus();
getView().setOnKeyListener((v, keyCode, event) -> {
//判断用户点击了手机自带的返回键
if (event.getAction() == KeyEvent.ACTION_UP &&
keyCode == KeyEvent.KEYCODE_BACK) {
//提示用户取消支付
ToastUtils.showShort(getActivity(), R.string.cancel_pay);
return true;
}
return false;
});
}
在Activity中返回键监听代码实现
/**
* 退出应用
*/
private long clickTime = 0; //记录第一次点击的时间
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
if ((System.currentTimeMillis() - clickTime) > 2000) {
Toast.makeText(this, "再按一次退出程序", Toast.LENGTH_SHORT).show();
clickTime = System.currentTimeMillis();
} else {
this.finish();
}
return true;
}
return super.onKeyDown(keyCode, event);
}
与君共勉
我要一步一步往上爬
在最高点乘着叶片往前飞
任风吹干流过的泪和汗
我要一步一步往上爬
等待阳光静静看着它的脸
小小的天有大大的梦想
我有属于我的天
任风吹干流过的泪和汗
总有一天我有属于我的天