4

バックグラウンドで簡単なタスクを作成し、実行中に進行状況バーを表示しようとしています。

これは、メインの (そして唯一の) アクティビティのコードです。

public class Login extends Activity {

    public static ProgressDialog progressDialog;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        (...)
        this.getWindow().requestFeature(Window.FEATURE_PROGRESS);
        this.getWindow().setFeatureInt(Window.FEATURE_PROGRESS, Window.PROGRESS_VISIBILITY_ON);
        progressDialog = new ProgressDialog(activity); 
        progressDialog.setMessage("Sending data...");
        progressDialog.setCancelable(false);
        (...)
             // In some onClick Eevent..
             JSONObject result = new Urltasks().execute(...).get();
        (...)

    }
}

アクティビティのコードは次のとおりです。

class Urltasks extends AsyncTask<String, Integer, JSONObject>{

    protected void onPreExecute()  {
        System.out.println("Inicia onPreExecute");
        Login.progressDialog.show();
    }

    protected void onPostExecute(String result) {
        Login.progressDialog.dismiss();
    }

    protected JSONObject doInBackground(String... arg0) {
             // Some work being done. I do not use Login.progressDialog here
    }
}

このコードでは、タスクの終了時に ProgressDialog が表示され、閉じられません。

4

3 に答える 3

0

進行状況ダイアログをログイン クラスに配置しないでください。非同期タスクに保持する

これはあなたのダイアログを表示する方法です

     progressDialog = ProgressDialog.show(yourActivityHERE.this, "",
    "Loading... please wait.");

あなたのためにこれを編集しました:

class Urls extends AsyncTask<String, Integer, JSONObject>{

ProgressDialog progressDialog;

protected void onPreExecute()  {

     progressDialog = ProgressDialog.show(yourActivityHERE.this, "",
    "Loading... please wait.");

}

protected void onPostExecute(String result) {
   progressDialog.dismiss();
}

protected JSONObject doInBackground(String... arg0) {
         // Some work being done. I do not use Login.progressDialog here
}
}
于 2013-07-24T20:49:23.317 に答える