我的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/

10-12 03:51