簡體   English   中英

更新GUI時的Android進度對話框

[英]Android Progress Dialog Box While updating GUI

所以我已經待了兩天了,但仍然無法正常工作。 我已經嘗試過實現可運行的asynctask的解決方案,但是似乎從來沒有與我的代碼一起使用。 也許我以錯誤的方式實現了它...

無論如何,我編寫了以下代碼。 創建此活動時,我想顯示帶有文本“正在加載”的進度對話框。 問題是,您無法從另一個線程更新GUI元素。 那就是我卡住的地方。 希望你能幫幫我!

PS:之所以需要ProgressDialog是因為該行

ArrayList<String> genres = MysqlHandler.getAllGenres();

可能需要花費一些時間來加載。 另外,我還有其他一些活動需要執行相同的操作,因此加載可能需要5秒鍾的時間。

public class GenreActivity extends Activity implements OnClickListener {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_genre);

    try {
        ArrayList<String> genres = MysqlHandler.getAllGenres();

        LinearLayout layout = (LinearLayout) findViewById(R.id.AllGenreLayout);

        for(int i = 0; i < genres.size(); i++)
        {
            Button myButton = new Button(this);
            myButton.setBackgroundDrawable(getResources().getDrawable(R.drawable.yellow_button));
            myButton.setTextAppearance(this, R.style.ButtonText);
            myButton.setText(genres.get(i));
            myButton.setOnClickListener(this);
            layout.addView(myButton);
        }
    } catch (ClientProtocolException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}
/// try :)

progressgialog.post(new Runnable(){
run ()
{
progressgialog.setMessage("asd");
}
})

//// catch :)

activity.runOnUiThread(new Runnable()
{
progressgialog.setMessage("asd");
});

我找到了解決方法,並認為我會分享。 由於我在oncreate方法中創建了另一個線程,所以我認為在啟動該意圖時也可以創建一個線程。 因此,代替此代碼:

Intent inte = new Intent(FirstSearchActivity.this, GenreActivity.class);
startActivity(inte);

現在我正在做:

//start the progress dialog
progressDialog = ProgressDialog.show(FirstSearchActivity.this, "", "Loading...");
new Thread() 
{
public void run() 
    {
        Intent inte = new Intent(FirstSearchActivity.this, GenreActivity.class);
        startActivity(inte);
        progressDialog.dismiss();
    }
}.start();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM