zoukankan      html  css  js  c++  java
  • 让ProgressDialog在setCancelable(false)时按返回键可dismiss

    最近发现Android4.0系统中ProgressDialog设置为setCancelable(true)时,点击ProgressDialog以外的区域也可以让ProgressDialog dismiss掉。但有时我们不希望是这样的效果,于是将ProgressDialog设置setCancelable(false),再点击ProgressDialog以外的区域就不会出现前面所说的情况了,然而这样以来再按返回键时就不起作用了,只能等待程序执行到dissmiss处为止。其实,只要为ProgressDialog添加KeyListener来对返回键予以处理就可以解决这个问题了。

    1. package cn.winfirm.examples.base;

    2. import android.app.Activity;
    3. import android.app.ProgressDialog;
    4. import android.content.DialogInterface;
    5. import android.content.DialogInterface.OnKeyListener;
    6. import android.os.Bundle;
    7. import android.view.KeyEvent;
    8. import android.view.Window;

    9. /**
    10.  * Activity的基类,带一个ProgressDialog,可双击取消其显示
    11.  * 
    12.  * @author savant
    13.  * 
    14.  */
    15. public class BaseActivity extends Activity {

    16.     private ProgressDialog progressDialog = null;

    17.     @Override
    18.     protected void onCreate(Bundle savedInstanceState) {
    19.         super.onCreate(savedInstanceState);
    20.         requestWindowFeature(Window.FEATURE_NO_TITLE);
    21.     }

    22.     /**
    23.      * show loading progress dialog
    24.      */
    25.     public void showDialog() {
    26.         if (null == progressDialog) {
    27.             progressDialog = ProgressDialog.show(BaseActivity.this, "", "正在加载,请稍候...");
    28.             progressDialog.setCancelable(false);
    29.         } else {
    30.             progressDialog.show();
    31.         }
    32.         progressDialog.setOnKeyListener(onKeyListener);
    33.     }

    34.     /**
    35.      * add a keylistener for progress dialog
    36.      */
    37.     private OnKeyListener onKeyListener = new OnKeyListener() {
    38.         @Override
    39.         public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
    40.             if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) {
    41.                 dismissDialog();
    42.             }
    43.             return false;
    44.         }
    45.     };

    46.     /**
    47.      * dismiss dialog
    48.      */
    49.     public void dismissDialog() {
    50.         if (isFinishing()) {
    51.             return;
    52.         }
    53.         if (null != progressDialog && progressDialog.isShowing()) {
    54.             progressDialog.dismiss();
    55.         }
    56.     }

    57.     /**
    58.      * cancel progress dialog if nesseary
    59.      */
    60.     @Override
    61.     public void onBackPressed() {
    62.         if (progressDialog != null && progressDialog.isShowing()) {
    63.             dismissDialog();
    64.         } else {
    65.             super.onBackPressed();
    66.         }
    67.     }
    68. }
  • 相关阅读:
    正则表达式(通用篇)
    Ubantu server部署django/flask项目
    Ubantu环境下安装mysql方法
    使用阿里大于发短信(简单版)
    SQLALchemy学习笔记(mysql+python环境)
    windows 安装使用 Memcached
    pycharm2019版本可用破解
    SVN使用教程
    Jquery学习
    css兼容问题
  • 原文地址:https://www.cnblogs.com/lanzhi/p/6469703.html
Copyright © 2011-2022 走看看