【安卓控件】 弹出窗进度条 progressDialog.setCancelable(false) 无法退出问题
目录
progressDialog.setCancelable(true);
progressDialog.setCancelable(false);
-
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);
ProgressDialog设置为setCancelable(true)时,点击ProgressDialog以外的区域也可以让ProgressDialog dismiss掉。但有时我们不希望是这样的效果,于是将ProgressDialog设置setCancelable(false),再点击ProgressDialog以外的区域就不会出现前面所说的情况了,然而这样以来再按返回键时就不起作用了,只能等待程序执行到dissmiss处为止。其实,只要为ProgressDialog添加KeyListener来对返回键予以处理就可以解决这个问题了。 https://blog.****.net/chenshijun0101/article/details/11147051
《第一行代码》
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();
}
}