让ProgressDialog在setCancelable(false)时按返回键可dismiss
最近发现Android4.0系统中ProgressDialog设置为setCancelable(true)时,点击ProgressDialog以外的区域也可以让ProgressDialog dismiss掉。但有时我们不希望是这样的效果,于是将ProgressDialog设置setCancelable(false),再点击ProgressDialog以外的区域就不会出现前面所说的情况了,然而这样以来再按返回键时就不起作用了,只能等待程序执行到dissmiss处为止。其实,只要为ProgressDialog添加KeyListener来对返回键予以处理就可以解决这个问题了。
- package cn.winfirm.examples.base;
- import android.app.Activity;
- import android.app.ProgressDialog;
- import android.content.DialogInterface;
- import android.content.DialogInterface.OnKeyListener;
- import android.os.Bundle;
- import android.view.KeyEvent;
- import android.view.Window;
- /**
- * Activity的基类,带一个ProgressDialog,可双击取消其显示
- *
- * @author savant
- *
- */
- public class BaseActivity extends Activity {
- private ProgressDialog progressDialog = null;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- requestWindowFeature(Window.FEATURE_NO_TITLE);
- }
- /**
- * show loading progress dialog
- */
- public void showDialog() {
- if (null == progressDialog) {
- progressDialog = ProgressDialog.show(BaseActivity.this, "", "正在加载,请稍候...");
- progressDialog.setCancelable(false);
- } else {
- progressDialog.show();
- }
- progressDialog.setOnKeyListener(onKeyListener);
- }
- /**
- * add a keylistener for progress dialog
- */
- private OnKeyListener onKeyListener = new OnKeyListener() {
- @Override
- public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
- if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) {
- dismissDialog();
- }
- return false;
- }
- };
- /**
- * dismiss dialog
- */
- public void dismissDialog() {
- if (isFinishing()) {
- return;
- }
- if (null != progressDialog && progressDialog.isShowing()) {
- progressDialog.dismiss();
- }
- }
- /**
- * cancel progress dialog if nesseary
- */
- @Override
- public void onBackPressed() {
- if (progressDialog != null && progressDialog.isShowing()) {
- dismissDialog();
- } else {
- super.onBackPressed();
- }
- }
- }
让ProgressDialog在setCancelable(false)时按返回键可dismiss的更多相关文章
- 解决Hbuilder打包的apk文件按手机返回键直接退出软件
问题描述:Hbuilder打包的app如果点击手机返回键,app会直接退出,返回不了上一页. 写在公共js文件中,每个页面均引入该js,代码如下: document.addEventListener( ...
- 简写代码:当变量为false时['',false,null,undefined,0,NaN]时,返回默认值
当变量为'',false,null,undefined,0,NaN时,返回默认值 var a='' a || 'hello world' "hello world" var a ...
- easyui-combobox的option选项为true与false时的问题
如题,我们使用easyui-combobox,当我们的选择项为true与false时,即选择是否,后台返回一个boolean类型的变量,那么这时候,通过form表单进行反显会出现这样的问题:表单里ea ...
- 在一个由 'L' , 'R' 和 'X' 三个字符组成的字符串(例如"RXXLRXRXL")中进行移动操作。一次移动操作指用一个"LX"替换一个"XL",或者用一个"XR"替换一个"RX"。现给定起始字符串start和结束字符串end,请编写代码,当且仅当存在一系列移动操作使得start可以转换成end时, 返回True。
在一个由 'L' , 'R' 和 'X' 三个字符组成的字符串(例如"RXXLRXRXL")中进行移动操作.一次移动操作指用一个"LX"替换一个"XL ...
- 在idea中相同的字符串使用equals()进行比较时,返回值是flase问题
最近在idea中遇到了一个编码的问题,我的程序是从前台传过来一个字符串,判断用户的角色(学生,教师,管理员), 在进行equals()判断时,返回的确是false,然后就在网上查了查,发现是编码的问题 ...
- 请求facebook授权时,返回错误
在请求facebook授权时,返回如下错误:所提供的网址不被应用程序配置所接纳.:应用程序的设置不允许一个或多个所提供的链接.它必须与网站的URL或Canvas的URL相符,或该域必须是应用程序的一个 ...
- 当SD卡拔出时,返回首页,栈中的activity都要清除,只留下首页的activity
目标:当SD卡拔出时,返回首页,栈中的activity都要清楚,只留下首页的activity 我在清单中注册了一个静态广播: <receiver android:name="com.p ...
- 关于C#读取MySql数据时,返回DataTable中某字段数据是System.Array[]形式
我在使用C#(VS2008)读取MySql数据库(5.1版本)时,返回的DataTable数据中arrivalDate字段数据显示为System.Array[]形式(程序中没有对返回的数据进行任何加工 ...
- layui table分页 page为false时,limit问题
问题描述:table数据表格page设为false时,limit为默认设置10 解决办法:limit设为 Number.MAX_VALUE 加载全部数据 实例: var table = layui.t ...
随机推荐
- xcode 各种项目设置
1:语言环境设置:项目–>PROJECT–>info–>Locailzation 2 : 手动加入项目依赖 Build Settings–>Search path–>Li ...
- dinic算法学习(以poj1273为例)
Dinic 算法模板 Dinic算法是一种比較easy实现的.相对照较快的最大流算法. 求最大流的本质,就是不停的寻找增广路径.直到找不到增广路径为止. 对于这个一般性的过程,Dinic算法的优化例 ...
- 动态规划 —— 求解通配符问题(wildcard)
he?p help, heap, √ hellp, × *p*(必须包含 p,左右随意) help, papa, √ hello × *bb*(必须包含连续的两个 bb,左右随意) babbc √ 1 ...
- .dmp文件导出使用示例
exp导出的几种用例,先睹为快: 1 将数据库SampleDB完全导出,用户名system 密码manager 导出到E:/SampleDB.dmp中 exp system/manager@TestD ...
- $_SERVER['DOCUMENT_ROOT']
$_SERVER['DOCUMENT_ROOT'] 一.总结 $_SERVER 是一个包含了诸如头信息(header).路径(path).以及脚本位置(script locations)等等信息的数组 ...
- [WPF自定义控件库]排序、筛选以及高亮
1. 如何让列表的内容更容易查找 假设有这么一个列表(数据源在本地),由于内容太多,要查找到其中某个想要的数据会比较困难.要优化这个列表,无非就是排序.筛选和高亮. 改造过的结果如上. 2. 排序 在 ...
- 三、链路追踪系统 zipkin
一.构建项目 用到的依赖直接看pom.xml的注释吧 <?xml version="1.0" encoding="UTF-8"?> <proj ...
- MySQL之SQL mode——检查官
原文:MySQL之SQL mode--检查官 MySQL升级后代码出bug? 前段时间,测试的MySQL服务器进行了一次升级,从MySQL5.6升级到了MySQL5.7.以为是简单的升级,不会影响到代 ...
- 王立平--eclipse本地配置svn
1.下载 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzQyNTUyNw==/font/5a6L5L2T/fontsize/400/fill/I ...
- js进阶解决浏览器缓存不能自动更新的问题(在ajax的url上带上一个参数,可以是日期,或者是随机数)(随机数Math.random)(取得日期的毫秒数:new Date().getTime();)
js进阶解决浏览器缓存不能自动更新的问题(在ajax的url上带上一个参数,可以是日期,或者是随机数)(随机数Math.random)(取得日期的毫秒数:new Date().getTime();) ...