0

ダイアログ ボックスで [OK] を押した後、別の場所からデータを取得する必要があります。だから私は Asynctask クラスを使用しました。実装は以下。しかし、最初に [OK] を押した後、進行状況バーが表示されません。2番目のokが押された後にのみ取得します(基本的に、ボタンのonClickメソッド内のすべての行が実行されたとき...最初のokを押した直後にプログレスバーを取得するにはどうすればよいですか?

confirmPath= (Button) findViewById(R.id.confirmPath);
            confirmPath.setOnClickListener(new OnClickListener() {


            @Override
            public void onClick(View arg0) {

                        construction
                        AlertDialog.Builder builder = new AlertDialog.Builder(Destination.this);
                        builder.setMessage("Press 'Ok' ")
                               .setPositiveButton("Ok", new DialogInterface.OnClickListener() {
                                   public void onClick(DialogInterface dialog, int id) {

                                       LoadData task = new LoadData();
                                       task.execute();


                                                                                AlertDialog alertDialog = new AlertDialog.Builder(Destination.this).create();
                                    alertDialog.setTitle("Attention!");
                                    alertDialog.setMessage(" Pay attention");
                                     alertDialog.setButton("OK", new DialogInterface.OnClickListener() {
                                           public void onClick(DialogInterface dialog, int which) {
                                           }
                                        });

                                        alertDialog.show();

                                   }
                               })
                               .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                                   public void onClick(DialogInterface dialog, int id) {
                                       // do nothing
                                   }
                               });
                       builder.create();
                       builder.show();

これが AsyncTask クラスです。

public class LoadData extends AsyncTask<Void, Void, Void> {
        ProgressDialog progressDialog;
        //declare other objects as per your need
        @Override
        protected void onPreExecute()
        {
            progressDialog= ProgressDialog.show(Destination.this, "Progress Dialog Title Text","Please wait", true);

            //do initialization of required objects objects here                
        };      
        @Override
        protected Void doInBackground(Void... params)
        {   

               ReadFromFile readFromFile= new ReadFromFile();
               readFromFile.ReadAllData("Data");
               //some other tasks to do

            return null;
        }       
        @Override
        protected void onPostExecute(Void result)
        {
            super.onPostExecute(result);
            progressDialog.dismiss();
        };
     }
4

3 に答える 3

0

このコードを使用してください

    private class NetworkDelegate extends AsyncTask<String, Void, String> {

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

    protected String doInBackground(String... pass) {

        try {


            //userid is getting from webservice             

        return userid;

        } catch (Exception e) {

            System.out.println(e);
        }




    }

    protected void onPostExecute(String result) {

        Dialog.dismiss();

        if (result == null) {
            tv.setText("Enter Your Password Correctly");
            pwet.setFocusable(true);

        } else {



        }

    }

    protected void onPreExecute() {

        Dialog.setMessage("Loading...");
        Dialog.show();

    }

}
于 2013-04-17T12:15:26.657 に答える
0

2 番目の alertdialog も asynctaskonPostExecuteメソッドに配置する必要がありました。それから私は明らかに前にプログレスバーを持っています

于 2013-04-17T12:41:32.737 に答える
0

このコードを AlertDialogBu​​ilder の外に置きます。

LoadData task = new LoadData();
task.execute();

新しいコードは次のようになります。

 @Override
            public void onClick(View arg0) {


                                       LoadData task = new LoadData();
                                       task.execute();


                        construction
                        AlertDialog.Builder builder = new AlertDialog.Builder(Destination.this);
                        builder.setMessage("Press 'Ok' ")
                               .setPositiveButton("Ok", new DialogInterface.OnClickListener() {
                                   public void onClick(DialogInterface dialog, int id) {


                                                                                AlertDialog alertDialog = new AlertDialog.Builder(Destination.this).create();
                                    alertDialog.setTitle("Attention!");
                                    alertDialog.setMessage(" Pay attention");
                                     alertDialog.setButton("OK", new DialogInterface.OnClickListener() {
                                           public void onClick(DialogInterface dialog, int which) {
                                           }
                                        });

                                        alertDialog.show();

                                   }
                               })
                               .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                                   public void onClick(DialogInterface dialog, int id) {
                                       // do nothing
                                   }
                               });
                       builder.create();
                       builder.show();
于 2013-04-17T12:06:09.513 に答える