0

プラスボタンをクリックした後にAlertDialog表示したい(インターネット接続中 - )。問題は、進行状況ダイアログがタスクの終了後、およびが閉じられたときにのみ表示されることです。hide() または Dismiss() を試みましたが、うまくいきません。ProgressDialogAlertDialogAsyncTaskAlertDialogAlertDialog

AlertDialog の前に ProgressDialog を表示する方法はありますか? これは私のコードです。

LayoutInflater li = LayoutInflater.from(kontekst);
final View vNearest;
vNearest  = li.inflate(R.layout.nearest, null);

AlertDialog.Builder builder = new AlertDialog.Builder(kontekst);
builder.setView(vNearest);
builder.setCancelable(true);

builder.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {

    @Override
    public void onClick(DialogInterface dialog, int witch) {

    String xml = "www.example.com";
    MarkerOptions nearestMO = new  DownloadXmlTask().execute(xml).get();
    String distance = nearestMO.getSnippet();

      }
    }); 

DownloadXmlTask​​ AsyncTask:

private class DownloadXmlTask extends AsyncTask<String, Integer, MarkerOptions> {

ProgressDialog waitDialog;

@Override
    protected void onPreExecute() {
    super.onPreExecute();
    waitDialog = ProgressDialog.show(Home.this, "Working", "Please Wait", true, true);
    waitDialog.setCanceledOnTouchOutside(false);
}

@Override
protected MarkerOptions doInBackground(String... urls) {

    try{             
        URL xmlURL= new URL(urls[0]);           
        SAXParserFactory spf = SAXParserFactory.newInstance();
        SAXParser sp = spf.newSAXParser();
        XMLReader xr = sp.getXMLReader();
        HandlingXMLStuff readingXML = new HandlingXMLStuff();
        xr.setContentHandler(readingXML);
        xr.parse(new InputSource(xmlURL.openStream()));

        return readingXML.getNearest();

    } catch (Exception e) {
        return null;
    }
}
  protected void onPostExecute(MarkerOptions result) {
    super.onPostExecute(result);
            waitDialog.dismiss();
}

}
4

1 に答える 1

2

asynctask 呼び出しから .get() を削除します。OnPostExecute では、getSnippet() を使用します。

于 2013-02-25T21:45:48.510 に答える