当点击onBackpress方法或者onKeyDown方法时出现不能响应的问题解决办法
来源:互联网 发布:板材下料优化软件 编辑:程序博客网 时间:2024/06/06 03:40
一般来讲,当我们点击手机上的back键之后,会直接调用activity的onbackpress()方法,或者我们也可以通过这样来进行捕捉点击事件
@Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK ) { mProgressDialog.dismiss(); //取消网络操作 cancelLoad(); } return super.onKeyDown(keyCode, event); }
可是在某些情况下,捕捉不到该事件,例如在对话框显示的时候
加入现在有一个访问网络的操作 比较耗时,所以采用progressdialog来显示一个正在进行网络操作的进度,可是如果用户觉得等待事件太长,可能直接想退出该网络应用界面,去做其他的事情,这时我们点击back键需要将dilog关掉,同时关掉AsyncTask 以及中断http操作(该部分以后将详细总结出来),
观察dialog部分的源代码如下所示:
/** * Called when the dialog has detected the user's press of the back * key. The default implementation simply cancels the dialog (only if * it is cancelable), but you can override this to do whatever you want. */ public void onBackPressed() { if (mCancelable) { cancel(); } }可以得到当有progressdialog出现的时候,我们点击back键的时候 会被dialog的默认onbackPressed获取到,所以当有progressdialog出现的时候,我们想点击back键的时候,能够在onbackPressed方法中去捕获该操作,我们可以这样:自己写一个dialog 继承 progressdialog 当然dialog也可义 代码如下:class myDialog extends ProgressDialog{ private Context context; public myDialog(Context context){ super(context); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK ) { mProgressDialog.dismiss(); //取消网络操作 cancelLoad(); } return super.onKeyDown(keyCode, event); } }
这样我们在有窗口显示的activity时就能够利用此方法捕获该back键后退的动作响应,实现我们想要的操作,如上,我想要进行async的cancel操作。class LoadSearchTask extends AsyncTask<Void, Void, List<Station>> { public void cancelTask() { Status status = getStatus(); MyLog.d("status = " + status); switch (status) { case PENDING: cancel(true); break; case RUNNING: cancel(true); Net.abort(); break; case FINISHED: cancel(true); break; default: break; } }
基本实现过程就这样,有个截图就好了
- 当点击onBackpress方法或者onKeyDown方法时出现不能响应的问题解决办法
- onkeydown不响应的原因及处理方法
- js中拼装Html时 在onclick 中传值出现问题解决办法,及替换全部的方法
- Activity的onKeyDown方法
- TabActivity重写onKeyDown()方法无响应解决方法
- 出现两个tomcat,点击enable不能去掉的方法
- android onKeyDown与输入法冲突问题解决方法
- 点击ListView中item时,出现不能及时响应点击事件的问题
- OnKeyDown方法
- 在对话框中动态创建的菜单不能响应UpdeateCommand的问题解决方法
- Webview点击二次界面js方法不能响应
- 关于在IE6下在PNG图片上不能点击LINK的问题解决方法
- 在html输入框中响应enter键盘------介绍重要的onkeydown方法实现“模糊查找”
- button响应点击事件的方法
- 当我们想点击一个链接实现删除或者类似的功能,想给出一个提示,具体实现方法
- textField 的通知和自己的方法的用法(当用作登陆时,想在没有内容的情况下按钮不能点击的实例)
- 在有TabHost控件的页面,解决onKeyDown方法不能拦截KeyEvent.KEYCODE_BACK事件
- 在有TabHost控件的页面,解决onKeyDown方法不能拦截KeyEvent.KEYCODE_BACK事件
- jquery中大于号的作用
- java压缩对象 与 对象的序列化
- DAPM之一:概述
- 黑马程序员_java基础集合
- Xfire 获取客户端IP地址
- 当点击onBackpress方法或者onKeyDown方法时出现不能响应的问题解决办法
- 报恩
- 用Windows 结构化异常处理及虚拟内存的简单程序
- Linux下搭建Telnet和Ftp配置
- 中断嵌套和定时器的应用
- JNI
- synchronized(this)的几个简单示例
- 红帽子下的防火墙的开启与关闭
- xfire 开发webservice, 传递中文字符串乱码问题