触摸屏幕时关闭进度对话框

Kai*_*las 16 android progressdialog android-progressbar

我ProgressDialog在线程中使用了a .在onButtonClick线程启动时,但当我触摸屏幕上的任何地方时,它ProgressDialog都会关闭.

我怎么能阻止这个?

private void ButtonClick(View view) {

    btn1 = (Button) view.findViewById(R.id.btn1);
    btn1.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            GetStudentData();
        }
    });
}

private synchronized void GetStudentData() {  
    try {
        // Thread to display loader
        new Thread() {
            @Override
            public void run() {
                Looper.prepare();
                dialog = Msg.ShowProgressDialogBox(
                    getActivity(),
                    dialog,
                    "Please wait while we fetch the student data...");
                Looper.loop();
            }
        }.start();

        new Thread() {
            @Override
            public void run() {
                String studentData="Kailas";
            }   
        }
    } catch(Exception ex {
    }
}
Run Code Online (Sandbox Code Playgroud)

更新

当我触摸屏幕时,ProgressDialog消失但获取所有数据.

JJ8*_*J86 51

将其添加到对话框中:

yourDialog.setCanceledOnTouchOutside(false);
Run Code Online (Sandbox Code Playgroud)

通过这种方式,您可以触摸屏幕,对话框将不会被取消.

编辑

如果您正在使用DialogFragment,则必须在调用show(FragmentManager mng,String tag)之前使用以下代码段:

更多信息在这里.

dialogFragment.setCancelable(false);
Run Code Online (Sandbox Code Playgroud)

编辑2

请注意ProgressDialog,因为Android Oreo(v8.0)现在已弃用.


Kai*_*las 5

private synchronized void GetStudentData() {

    try {
    // Thread to display loader
    new Thread() {
        @Override
        public void run() {
            Looper.prepare();
            dialog = Msg.ShowProgressDialogBox(getActivity(),
                    dialog,
                    "Please wait while we fetch the student data...");
            dialog.setCanceledOnTouchOutside(getRetainInstance());
            Looper.loop();
        }
    }.start();

    new Thread() {

        @Override
        public void run() {
                  String studentData="Kailas";
         }   
    }
}
Run Code Online (Sandbox Code Playgroud)

我使用过这行dialog.setCanceledOnTouchOutside(getRetainInstance()); 它在我的Android设备操作系统(4.0.1)中运行良好,也在OS(2.6.3)上测试过