0

我是安卓新手。我试图ProgressDialog 在单击按钮时显示。

这是我的代码:

// set listener
btn_Login.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
    //progress.show();

    MyAsynch    asynch = new MyAsynch();
    asynch.execute();
}

在此代码进度对话框中,当我对 Asynctask 对象进行评论时出现太晚,然后进度对话框正常出现。

我正在将我的进度对话框放入 AsynchTask方法中

onPreExecute()但同样的输出对话框显示晚。

如何解决我的问题..??

我还阅读了以下链接的堆栈答案,但没有解决我的问题。

异步任务进度对话框显示太晚

ProgressDialog 出现太晚,消失太快

这是我的异步任务代码

        private class MyAsynch extends AsyncTask<String, Void, String> {
        ProgressDialog progress;
        String login_stat;
        String stat;

        @Override
        protected void onPreExecute() {
            progress = new ProgressDialog(this);
            progress.setTitle(" User Login ");
            progress.setMessage("Please Wait!!");
            progress.setCancelable(false);
            progress.setIndeterminate(true);
            progress.setProgressStyle(ProgressDialog.STYLE_SPINNER);
            progress.show();
        }
        @Override
        protected String doInBackground(String... urls) {

            try {

                login_stat = s_ApiHandling.doLogin(m_Et_Username.getText()
                        .toString().trim(), m_Et_Password.getText()
                        .toString().trim());


            } catch (Exception e) {
                System.out.println("internet connection loss ");
                stat = "ERORR";
                e.printStackTrace();
            }

            return stat;
        }


   @Override
 protected void onPostExecute(String status) {

                progress.dismiss();




            }

    }
4

3 回答 3

0

你的代码应该是这样的:

AsyncTask<String, Void, String>()
{
    private ProgressDialog progressDialog = ProgressDialog.show(this, "", "Loading...");

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

    @Override
    protected String[] doInBackground(String... params)
    {
        //ALL CODE GOES HERE.
    }
}

当您调用 asynctask 时,您不能使用该get()方法,否则进度对话框将无法正常工作。

于 2013-07-10T07:26:52.160 回答
0

You are probably doing too much in onPreExecute

于 2013-07-10T06:20:46.913 回答
0

progress.cancel()从您的方法中删除doInBackground并将其放入onPostExecuteAsyncTask 中的方法中(如您发布的第二个链接)

您不应该在后台线程中与 UI 进行任何对话 - 这一切都应该在执行前/执行后完成。

于 2013-07-10T06:26:47.700 回答