2

私はasynctaskかなり頻繁に使用しますが、今回は機能しません!UI にviewpagerとが含まれていfragmentsます。ビューに入力するには、約 3 秒かかります。を使用して終了するまで ProgressDialog を表示したいと思いAsyncTaskます。しかし、ProgressDialogが表示されていません!!!!

誰でも解決策を教えてもらえますか? ありがとう

onCreate(...){
   setContentView(...)
   new LoadUI(MyActivity.this).execute();
}

public class LoadUI extends AsyncTask<Void, Void, Void>{
    ProgressDialog pd;
    Context context;

    public LoadUI(Context mContext) {
        this.context = mContext;
        pd = new ProgressDialog(mContext);
        aViewPager = (ViewPager) findViewById(R.id.aPagerDay);
    }

    @Override
    protected void onPreExecute() {
        pd.show();
    }

    @Override
    protected Void doInBackground(Void... params) {
        //Create ViewPager
        //Create pagerAdapter
        return null;
    }

    @Override
    protected void onPostExecute(Void result) {
        if (pd.isShowing()) {
            pd.dismiss();
        }
        super.onPostExecute(result);
    }

}
4

2 に答える 2

0

次の2つのオプションを試すことができます。

次のようなAsyncTask'sメソッドを使用します。get(long timeout, TimeUnit unit)

task.get(1000, TimeUnit.MILLISECONDS);

これにより、メインスレッドAsyncTaskは最大1000ミリ秒の結果を待機します。

または、非同期タスクが終了するまで進行状況ダイアログを表示することもできます。このスレッドを参照してください。基本的に、進行状況ダイアログは非同期タスクの実行中に表示され、終了すると非表示になります。

3番目のオプションもあります: "Threadニーズに十分な場合は、そのjoinメソッドを使用できます。ただし、タスクに時間がかかる場合は、進行状況ダイアログを表示する必要があります。それ以外の場合は、メインのために例外が発生します。スレッドが長時間非アクティブになっています。

于 2013-01-06T08:50:32.703 に答える
0

問題は、GUI が で準備ができていないことonCreate()です。Dialogそして、この状態で表示しようとしても何も表示されません。dialog解決策は、アクティビティに移動することonStart()です:

@override
onStart(){
   new LoadUI(MyActivity.this).execute();
}
于 2015-02-24T08:15:48.870 に答える