1

AlertDialogサーバーから何かをダウンロードするかどうかをユーザーが選択できるように作成します。

ユーザーがダウンロードを選択すると、AlertDialogが閉じられ、 にProgressDialog接続されたが表示されAsyncTaskます。

ProgressDialog表示されません。の「OK」ボタンはAlertDialog、 の操作が終了するまで選択されたままになりAsyncTaskます。

AsyncTaskコード内の操作を「コメント」すると、AlertDialogが正しく閉じられ、 がProgressDialog表示されます。

実際のデバイスでアプリケーションを試したことはありませんが、シミュレーターのみです。

問題はどれですか?

4

3 に答える 3

1

このコードを試してみてください。

private class allinfo extends AsyncTask<String, Void, JSONObject> {
        private ProgressDialog dialog;

        protected void onPreExecute(){
             dialog = ProgressDialog.show(collection.this, "Loading", "Loading. Please wait...", true,false);
        }

        @Override
        protected JSONObject doInBackground(String... arg0) {
            // TODO Auto-generated method stub

            return json;
        }
        protected void onPostExecute(JSONObject json)
        {
            dialog.dismiss();
            info(json);
        }

     }
于 2012-12-21T16:46:39.347 に答える
0

ProgressDialogポジティブボタンAsyncTaskを使用した例の実装:AlertDialog

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_layout);

        AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
        // set title
        alertDialogBuilder.setTitle("Your Title");
        // set dialog message
        alertDialogBuilder
        .setMessage("Click yes to go to AsyncTask!")
        .setPositiveButton("Yes",new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog,int id) {
                new MyAsyncTaskClass().execute();
            }
        })
        .setNegativeButton("No",new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog,int id) {
                // if this button is clicked, just close
                // the dialog box and do nothing
                dialog.cancel();
            }
        });
        // create alert dialog
        AlertDialog alertDialog = alertDialogBuilder.create();
        // show it
        alertDialog.show();

    }

    // Here is the start of the AsyncTask    
    class MyAsyncTaskClass extends AsyncTask<String, String, Void> {

        private ProgressDialog progressDialog = new ProgressDialog(MainActivity.this);

        protected void onPreExecute() {
            progressDialog.setMessage("Dialog Message");
            progressDialog.show();
            progressDialog.setCanceledOnTouchOutside(false);
        }

        @Override
        protected Void doInBackground(String... params) {
            // TODO stuff
        }

        protected void onPostExecute(Void v) {
            this.progressDialog.dismiss();
        }
    }
}
于 2012-12-21T16:58:30.797 に答える