-3

在我的“OnClickListener”中,“ProgressDialog”没有出现(下面的代码):

    Button suchenbutton = (Button) findViewById(R.id.suchen);
    suchenbutton.setOnClickListener(new View.OnClickListener() {
        //TODO
       public void onClick(View v) {

           ProgressDialog dialog= ProgressDialog.show(TankFinderActivity.this, "", 
                "Loading. Please wait...", true);
           InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
           imm.hideSoftInputFromWindow(filterTextSSD.getWindowToken(), 0);
           loadsuchen();

           dialog.dismiss();

       }

    });

我做错什么了?

4

3 回答 3

4

这似乎loadsuchen()是一种在主线程上运行的繁重方法。用于AsyncTask在单独的线程中运行该方法并dialog.dismiss()在最后调用:

@Override
public void onClick(View arg0)
{
    final ProgressDialog dialog = ProgressDialog.show(TankFinderActivity.this, "", "Loading. Please wait...", true);
    InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(filterTextSSD.getWindowToken(), 0);

    new AsyncTask<Void, Void, Void>()
    {
        @Override
        protected Void doInBackground(Void... params)
        {
            loadsuchen();
            return null;
        }

        @Override
        protected void onPostExecute(Void result)
        {
            dialog.dismiss();
        }
    }.execute();
}
于 2012-07-05T11:18:06.397 回答
1

这是因为您在按钮的同一个单击事件上显示和关闭对话框。它会在对话框出现时立即关闭对话框。更改代码并尝试将 dialog.dismiss() 保留在其他地方。

于 2012-07-05T11:24:08.683 回答
1

按钮点击

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

            public void onClick(View v) {
                // TODO Auto-generated method stub
                openprogresdialog();
            }
        });

创建一个这个方法。

private void openprogresdialog() {
        // TODO Auto-generated method stub
        final ProgressDialog progDailog = ProgressDialog.show(
                HidekeybordActivity.this, "Testing", "Please wait...", true);

        new Thread() {
            public void run() {
                try {
                    // Some code........
                } catch (Exception e) {
                }
                progDailog.dismiss();
            }
        }.start();
    }
于 2012-07-05T11:37:46.600 回答