2011-01-07 14 views
0

Hey、 WebからXMLを取得している間にProgressDialogを動作させようとしています。問題は、XMLが読み込まれて表示されるとすぐにダイアログが表示されることです。後でそれを却下すれば、それはまったく表示されません。何をすべきか?私はアンドロイドの開発に新たなんだ、これが私の最初のアプリです、私はすでにネットを検索したが、任意の実用的なソリューションを見つけることができませんでした。.. ここ短縮コードです:事前XMLが取得された後にProgressDialogが表示される

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); 
} 
} 

おかげで

+0

yuck @ xml、json!を使用してください。 – binnyb

答えて

2

AsynTaskを読んでください。このユースケースのために設計されています。

0

進捗ダイアログを作成するには、あなたがあなたの活動に "onCreateDialog" をオーバーライドする必要があります。

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

をXMLデータをロードする前に "にShowDialog" を使用してそれを表示:

showDialog(0); 

と「removedDialog "それを取り除く:

context.removeDialog(0); 
+0

iveは私の例のようにこれを試しました。 progressdialogは全く表示されません。もしremoveDialog(0)を削除すると、XMLがロードされた後にロードされているのがわかります – robs

関連する問題