2011-01-07 4 views
0

Hey, Ich versuche, einen ProgressDialog zu erstellen, während ich XML aus dem Internet abrufe. Das Problem ist, dass der Dialog angezeigt wird, sobald das XML geladen und angezeigt wird. Wenn ich es danach ablehne, wird es überhaupt nicht mehr angezeigt. Irgendwelche Ideen, was zu tun ist? Ich bin neu Entwicklung auf Android und dies ist meine erste App, ich habe schon im Netz gesucht, aber keine funktionierende Lösung gefunden .. Hier ist der verkürzte Code:ProgressDialog wird angezeigt, nachdem XML abgerufen wurde

public class showReleases extends Activity { 
    SitesList sitesList = null; 

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.releasedetails); 
    ProgressDialog dialog = new ProgressDialog(showReleases.this); 
    dialog.setMessage("please wait"); 
    dialog.setIndeterminate(true); 
    dialog.setCancelable(false); 
    dialog.show(); 

    getFeed2(); 

    dialog.dismiss(); 
} 


public void getFeed2() { 
    Bundle extras = getIntent().getExtras(); 

    try { 

     SAXParserFactory spf = SAXParserFactory.newInstance(); 
     SAXParser sp = spf.newSAXParser(); 
     XMLReader xr = sp.getXMLReader(); 

     URL sourceUrl = new URL("http://www.it-leaked.com/app/details.php?id=" + extras.getString("id")); 

     MyXMLHandler myXMLHandler = new MyXMLHandler(); 
     xr.setContentHandler(myXMLHandler); 
     xr.parse(new InputSource(sourceUrl.openStream())); 

    } catch (Exception e) { 
     System.out.println("XML Pasing Excpetion = " + e); 
    } 

    sitesList = MyXMLHandler.sitesList; 

    TextView txtView = (TextView)findViewById(R.id.TextView01); 
    txtView.setText(sitesList.getTitle().get(0)); 
    TextView txtView2 = (TextView)findViewById(R.id.TextView02); 
    String myTracklist = sitesList.getTracklist().get(0); 
    myTracklist = myTracklist.replace("||||", "\n"); 
    txtView2.setText(myTracklist); 
} 
} 

Vielen Dank im Voraus

+0

yuck @ xml, benutze json! – binnyb

Antwort

2

Lesen Sie auf AsynTask, es ist nur für diesen Anwendungsfall konzipiert.

0

einen Fortschrittsdialog zu erstellen, sollten Sie "onCreateDialog" in Ihrer Aktivität außer Kraft setzen:

@Override 
protected Dialog onCreateDialog(int id) { 
    ProgressDialog dialog = new ProgressDialog(this); 
    dialog.setMessage("loading..."); 
    dialog.setIndeterminate(true); 
    dialog.setCancelable(true); 
    return dialog; 
} 

und es zeigt "Showdialog" können, bevor die XML-Daten geladen werden:

showDialog(0); 

und „removedDialog "um es loszuwerden:

context.removeDialog(0); 
+0

Ich habe es versucht und es ist dasselbe wie in meinem Beispiel. Der Fortschrittdialog wird überhaupt nicht angezeigt und wenn ich removeDialog (0) lösche, kann ich sehen, dass er geladen wird, nachdem XML geladen wurde – robs