我有一个带有按钮的Android活动/布局。当我单击此按钮时,它会打开一个带有2个微调器的DialogFragment。当DialogFragment出现时,我需要使用Web服务返回的项填充这两个微调器。因此,在等待服务返回时,我想在我刚刚打开的DialogFragment上显示ProgressDialog。
问题是我似乎无法将ProgressDialog置于DialogFragment之上。我可以看到ProgressDialog显示在DialogFragment后面,是否可以将ProgressDialog显示在其他所有内容上?
我的代码是这样的:
public class RegionalFragment extends DialogFragment {
private View view;
private Activity activity;
private Spinner spinner1;
private Spinner spinner2;
private ProgressDialog progressDialog;
public RegionalFragment(Activity activity) {
this.activity = activity;
LayoutInflater inflater = activity.getLayoutInflater();
view = inflater.inflate(R.layout.spinner_selection, null);
this.progressDialog = new ProgressDialog(activity);
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder =
new AlertDialog.Builder(activity)
.setTitle(R.string.title)
.setView(view)
.setPositiveButton(R.string.ok, new MyListener(activity))
.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
getDialog().cancel();
}
});
progressDialog.getWindow().setBackgroundDrawable(new ColorDrawable(1));
progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progressDialog.setCancelable(false);
progressDialog.setIndeterminate(true);
progressDialog.setMessage("Please wait...");
progressDialog.show();
invokeAsyncWebService();
return builder.create();
}
谢谢!
答案 0 :(得分:3)
显然这是一个广泛抱怨ProgressDialog
的主题,我建议你尝试使用构建器创建的普通对话框,其布局(由您自定义)包括进度条或加载或任何您需要的。这应该可以解决你的问题。
答案 1 :(得分:0)
由于配置更改而重新创建我的父DialogFragment时,我也遇到了问题。我无法再将progressDialog显示在顶部。 解决方案是在onResume()事件中显示progressDialog:
@Override
public void onResume() {
super.onResume();
if (inProgress) {
progressDialog = ProgressDialog.show(ctx, "Report request", "connecting...", true);
}
}