【问题标题】:progressdialog going behind a dialogprogressdialog 在对话框后面
【发布时间】:2013-12-19 14:19:22
【问题描述】:

我已经创建了对话框,它膨胀了用信息更新的 xml。但是进度对话框显示在弹出的对话框后面。如何在带有膨胀 xml 的对话框顶部显示这些进度对话框。

public class MainActivity extends Activity {

     protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);


           dialog();
        }


        public class loadasync extends AsyncTask<Void, Void, JSONObject> {

            ProgressDialog progressDialog ;
            @Override
            protected JSONObject doInBackground(Void... params) {
                    }
            @Override
            protected void onPreExecute() {
                // TODO Auto-generated method stub

                super.onPreExecute();
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                          progressDialog = new ProgressDialog(MainActivity.this);
                        progressDialog.setMessage("loading");
                        progressDialog.setCanceledOnTouchOutside(false);
                        progressDialog.show();
                    }
                });         
            }

            @Override
            protected void onPostExecute(JSONObject result) {


                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {


                         progressDialog.dismiss();   
                    }       
                });
            }
        }   



        public void dialog() {

            dialog = new Dialog(MainActivity.this);
             dialog.setContentView(R.layout.dialogxml);

        loadasync loadasyncdata=new loadasync();
        loadasyncdata.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);


            dialog.show();


        }

【问题讨论】:

    标签: android dialog android-asynctask progressdialog


    【解决方案1】:

    我看不到您在代码中使用了 setProgressStyle()。那就是:

     progessDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
    

    例如。

    所以在您的代码中尝试以下操作:

     public void run() {
                        progressDialog = new ProgressDialog(MainActivity.this);
                        progressDialog.setMessage("loading");
                        progressBar.setProgressStyle(ProgressDialog.STYLE_SPINNER);
                        progressDialog.setCanceledOnTouchOutside(false);
                        progressDialog.show();
                    }
    

    【讨论】:

      【解决方案2】:

      需要考虑的一点:OnPostExecute 和 onPreExecute 都在 UI 线程上运行,所以你可以删除 runOnUIThread 的东西,只需这样做

              protected void onPreExecute() {
                progressDialog = new ProgressDialog(MainActivity.this);
                progressDialog.setMessage("loading");
                progressDialog.setCanceledOnTouchOutside(false);
                progressDialog.show();
              }
      

      分别在 onPostExecute

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

      应该是评论,但是名声……

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-04
        相关资源
        最近更新 更多