0

だから私はこれを2日間続けましたが、まだうまくいきません。実行可能な 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();
    }
}
4

2 に答える 2

0
/// try :)

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

//// catch :)

activity.runOnUiThread(new Runnable()
{
progressgialog.setMessage("asd");
});
于 2013-01-29T09:58:13.177 に答える
0

回避策を見つけたので、共有したいと思いました。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();
于 2013-01-30T13:59:27.610 に答える