2013-02-25 124 views
0

我有AlertDialog,我想在顯示ProgressDialog後點擊AlertDialog肯定按鈕(在Internet連接 - AsyncTask期間)。問題在於「進度」對話框僅在完成任務後以及關閉AlertDialog時才顯示。我試圖隱藏()或解僱()AlertDialog,但它不起作用。點擊AlertDialog按鈕後顯示ProgressDialog

任何想法如何在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(); 
} 

} 
+0

嘗試dialog.cancel()內onClick() – moDev 2013-02-25 19:29:44

+0

@Mitesh我試過它不工作.. – Vis 2013-02-25 19:30:40

+0

是這個完整的代碼?你能夠顯示警報對話框嗎? – moDev 2013-02-25 19:36:29

回答

2

拆下獲得()從所述的AsyncTask呼叫。在OnPostExecute中使用getSnippet()。

+0

是啊,似乎.get()凍結了AlertDialog。謝謝! – Vis 2013-02-25 23:04:11