AlertDialog 未显示在 Stepper Fragment 上

AlertDialog not showing on Stepper Fragment

我正在使用 Android Material 步进器库 (https://github.com/stepstone-tech/android-material-stepper) 实现步进器。在第三步,我正在实施一个 BlockingStep 来进行 Http 调用,而 UI 是 blocked/showing 一个对话框。

问题是对话框没有出现。我尝试使用 ProgressDialog 和 AlertDialog,但 none 出现在屏幕上。

@Override
public void onNextClicked(final StepperLayout.OnNextClickedCallback callback) {
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    builder.setView(R.layout.dialog_loader);
    builder.setCancelable(false);
    final AlertDialog dialog = builder.show();
    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            try {
                //Generating JSONObject

                //Using AsyncTask to end JSON
                TCPConfigurationTask task = new TCPConfigurationTask();
                String[] params = {mIp, mPort, configObject.toString(), "true"};
                String response = task.execute(params).get();

                //Consuming response
                if (response != null) {
                    Log.d("JSON_CODE_RESPONSE", response);
                }
            } catch (JSONException | InterruptedException | ExecutionException e) {
                jsonError = true;
            }
            dialog.dismiss();
            callback.goToNextStep();
        }
    }, 0L);
}

编辑:

答案中提供的代码没问题。问题是 MainThread 在等待 AsyncTask 响应时做了太多工作。

替换这一行,

final AlertDialog dialog = builder.show();

AlertDialog alert = builder.create();
alert.show();

使用下方关闭对话框,

alert.dismiss();

使用它,在您的 AlertDialog 中设置自定义布局,

builder.setView(R.layout.dialog_loader);

LayoutInflater inflater = this.getLayoutInflater();
View dialogView = inflater.inflate(R.layout. dialog_loader, null);
builder.setView(dialogView);