【安卓控件】 弹出窗进度条  progressDialog.setCancelable(false) 无法退出问题

目录

  progressDialog.setCancelable(true);

  progressDialog.setCancelable(false);

  1.   progressDialog.setCancelable(true);

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.java.base.ProgressDialogActivity">

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/btn_dialog"
        android:text="弹出窗进度"
        />

</RelativeLayout>
package com.java.base;

import android.app.ProgressDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

import com.zengjx.androidbaseproject.R;

public class ProgressDialogActivity extends AppCompatActivity   implements View.OnClickListener{
   private ProgressDialog  progressDialog;

   private Button  button;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_progress_dialog);
        button=(Button) findViewById(R.id.btn_dialog);
        button.setOnClickListener(this);
    }
    public     void  initView(){
        
    }
    @Override
    public void onClick(View v) {
      switch (v.getId()){
          case  R.id.btn_dialog:
           progressDialog=  new ProgressDialog(this);
           progressDialog.setTitle("This   is ProgressDialog");
           progressDialog.setMessage("Loading......");
           progressDialog.setCancelable(true);//可以通过点击控件以外的区域 返回键取消
           progressDialog.show();
           break;
      }
    }
}

 【安卓控件】 弹出窗进度条  progressDialog.setCancelable(false) 无法退出问题

 

 

  1.   progressDialog.setCancelable(false);

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

《第一行代码》【安卓控件】 弹出窗进度条  progressDialog.setCancelable(false) 无法退出问题

package com.java.base;

 


import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import com.zengjx.androidbaseproject.R;

public class ProgressDialogActivity extends AppCompatActivity   implements View.OnClickListener{
   private ProgressDialog  progressDialog;
    private static final String TAG = "ProgressDialogActivity";
   private Button  button;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_progress_dialog);
        button=(Button) findViewById(R.id.btn_dialog);
        button.setOnClickListener(this);
    }
    public     void  initView(){

    }
    @Override
    public void onClick(View v) {
      switch (v.getId()){
          case  R.id.btn_dialog:
           progressDialog=  new ProgressDialog(this);
           progressDialog.setTitle("This   is ProgressDialog");
           progressDialog.setMessage("Loading......");
           progressDialog.setCancelable(false);
           progressDialog.show();
           progressDialog.setOnKeyListener(onKeyListener);


      }
    }
    private DialogInterface.OnKeyListener onKeyListener = new DialogInterface.OnKeyListener() {
        @Override
        public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
            //  progressDialog.dismiss();//按 菜单键  和 返回键  
            Toast.makeText(ProgressDialogActivity.this,"keyCode="+keyCode,Toast.LENGTH_SHORT).show();

            Log.d(TAG, "onKey: keyevent"+event);
            if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) {
                progressDialog.dismiss();//按返回键可退出
              //  if()

            }
            return false;
        }
    };


    @Override
    protected void onDestroy() {
        super.onDestroy();


    }
}

参考文献:https://blog.csdn.net/chenshijun0101/article/details/11147051