我有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();
}
}
嘗試dialog.cancel()內onClick() – moDev 2013-02-25 19:29:44
@Mitesh我試過它不工作.. – Vis 2013-02-25 19:30:40
是這個完整的代碼?你能夠顯示警報對話框嗎? – moDev 2013-02-25 19:36:29