0

Web から XML をフェッチしているときに、ProgressDialog を機能させようとしています。問題は、XML が読み込まれて表示されるとすぐにダイアログが表示されることです。後でそれを却下すると、まったく表示されなくなります。何をすべきか?私はアンドロイド開発に不慣れで、これが私の最初のアプリです。すでにネットを検索しましたが、有効な解決策が見つかりませんでした..短縮されたコードは次のとおりです。

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

前もって感謝します

4

2 に答える 2

2

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

于 2011-01-07T14:00:15.713 に答える
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);
于 2011-01-07T14:04:01.310 に答える