您的位置:首页 > 移动开发 > Android开发

Android学习心得② - fragment中设置双击返回键退出程序

2015-04-14 14:28 399 查看
最近做的软件要实现双击返回键退出程序效果,其实一开始我是拒绝的,你不能让我改,我就马上去改,因为我不愿意改完了以后再加一些特技上去,代码“duang”一下,很快、很屌,这样用户出来一定会骂我,根本没有这样的软件,就证明上面那个是假的。后来我也经过证实他们确实是实用的,我改了大概一个小时左右,感觉还不错,后来我在用的时候也要求他们不要加特技,因为我要让用户看到,我用完之后是这个样子,你们用完之后也会是这个样子!

好啦不玩啦,下面正经点

然后捏我就上网搜啊搜啊,发现了Android中的“再按一次返回键退出程序”实现 的代码很好用, 下面贴出来

private long exitTime = 0;

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN){
if((System.currentTimeMillis()-exitTime) > 2000){
Toast.makeText(getApplicationContext(), "再按一次退出程序", Toast.LENGTH_SHORT).show();
exitTime = System.currentTimeMillis();
} else {
finish();
System.exit(0);
}
return true;
}
return super.onKeyDown(keyCode, event);
}


通过覆盖onKeyDown方法

不过呢,有一个问题。。这是基于Activity的方法,而我的程序主要是基于fragment的,activity只是个托管。。。所以这个方法不适用啊

于是我又各种查资料啊查资料啊希望能发现fragment中如何覆盖onKeyDown方法啊,后来都想到了要去进行fragment和activity的数据传递,幸亏我太懒了,觉得太麻烦,继续查资料,首先是看了Overflow上的Fragment activity catch onKeyDown and use in fragment,写进我的代码里,但是还是有各种异常。。然后继续查资料,最终找了解决办法:

友情提供 fragment监听返回键

修改了一下上面文章的代码,就可以点击两次返回键退出程序啦~

private View.OnKeyListener backListener = new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK
&& event.getAction() == KeyEvent.ACTION_DOWN) {
// ToDo
if ((System.currentTimeMillis() - exitTime) > 2000) {
Toast.makeText(getActivity(), "再按一次退出程序", Toast.LENGTH_SHORT).show();
exitTime = System.currentTimeMillis();
} else {
// 这里是我做了保存数据操作
BLEDeviceLab.get(getActivity()).saveDevices();
mEditor.putString("ip", ipAddress);
mEditor.commit();
getActivity().finish();
System.exit(0);
}
return true;
}
return false;
}
};


“duang”的一下,软件就完成啦!( 请体谅我这个有病(精神病)之人(>_<))
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 返回键