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);
我正在使用 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);