1

私が使用したバックグラウンドプロセスを表示しますProgressDialogBox

私のコードは

add_button.setOnClickListener(new OnClickListener() {


        public void onClick(View viewParam) {


            progressDialog = ProgressDialog.show(AddTicketActivity.this, "", "Loading...");

            new Thread() {

            public void run() {

            try{

            sleep(10000);

            } catch (Exception e) {

            Log.e("tag", e.getMessage());

            }

            progressDialog.dismiss();
            }

            }.start();

その正常に動作します。しかし、問題は、データがフェッチ/追加されるまで表示したい10000ミリ秒の進行状況です。つまり、フェッチ/追加時間に依存する必要があります。

好きにしようと思った

public void onClick(View viewParam) {

progressDialog = ProgressDialog.show(AddTicketActivity.this, "", "Loading...");

Fetching data code here

progressDialog.dismiss();
}

しかし、それはうまくいきません。プログレスバーは表示されません。

どのように使用できますか。

ありがとう。

4

3 に答える 3

2

この進行状況バーの方法は非同期です。これはあなたにとって役立つかもしれません。

// class for displaying dialog box
class DialogTask extends AsyncTask<Void, Void, String> {

    protected String doInBackground(Void... urls) {
        return null;
    }

    @Override
    protected void onPostExecute(String result) {

        method to execute
        super.onPostExecute(result);
    }
}
于 2011-11-02T07:20:22.067 に答える
0

ProgressDialogまたはProgressBarでAsyncTaskを使用することをお勧めします。

  1. onPreExecute() メソッドで、ProgressBar を表示するか、次のように再び表示します。progressbar.setVisibility(View.VISIBLE);
  2. doInBackground() メソッドで、バックグラウンド タスクを実行します。
  3. onPostExecute() メソッドでは、progressbar.setVisibility(View.INVISIBLE);
于 2011-11-02T07:18:08.387 に答える
0

あなたのコードは大丈夫です:

public void onClick(View viewParam) {

    progressDialog = ProgressDialog.show(AddTicketActivity.this, "", "Loading...");

    // Fetching data code here
    // ...
    // Data Fetched

    progressDialog.dismiss();
}

同じスレッドでコードをフェッチしている限り、これは機能するはずです (ただし、ANR につながる可能性があります。使用を検討してくださいAsyncTask)。

EDIT :別のスレッドでデータを取得している場合、ロジックに従って進行状況ダイアログを表示し、すぐに閉じることに注意してください。

于 2011-11-02T07:21:08.597 に答える