我的ProgressDialog
没有显示-在AsyncTask类BackgroundDataLoad中定义。
DialoguePopup课堂-
public class DialoguePopup extends DialogFragment {
public DialoguePopup newInstace()
{
DialoguePopup dialogFragment = new DialoguePopup();
return dialogFragment;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{
super.onCreateView(inflater, container, savedInstanceState);
//view related code..
//Calculation logic data load in background
new BackgroundDataLoad().execute();
return view;
}
class BackgroundDataLoad extends AsyncTask<String, String, String>
{
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(getActivity());
pDialog.setMessage("Calculating ...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(false);
pDialog.show();
}
@Override
protected String doInBackground(String... params)
{
//Data that can take 8 seconds to load is in background process
return null;
}
@Override
protected void onPostExecute(String result)
{
super.onPostExecute(result);
pDialog.dismiss();
}
注意:
经过更多调试之后,我知道我的ProgressDialog显示在DialogFragment的下面,但我希望它显示在DialogFragment的顶部。
SO帖子How can I open a ProgressDialog on top of a DialogFragment?提到,
显然,多数民众赞成在与
ProgressDialog,建议您尝试使用创建的普通对话框
生成器,其布局(由您定制的布局)包括
进度栏或加载或您需要的任何内容。这应该解决您的
问题。
但是我不知道您的应用程序是否在不同的视图中始终使用
ProgressDialog
,那么这是使用自定义生成器执行此操作的最佳方法吗?它阻碍了应用程序的一致性。此外,这是另一种方法。
最佳答案
@ 天哪
您只有两步之遥。onCreateDialog()
为
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Dialog dialog = super.onCreateDialog(savedInstanceState);
dialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
return dialog;
}
onStart()
为@Override
public void onStart() {
super.onStart();
new BackgroundDataLoad().execute();
}
现在,您的加载任务将在对话框创建后执行,因此现在您可以查看显示的进度对话框。
关于android - 如何在AsyncTask中的DialogFragment中显示ProgressDialog,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25264716/