-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 に答える