0

Androidで進行状況ダイアログを作成し、2秒間開いたままにしてから閉じます。

以下は私が書いたコードです:

package com.example.proressdialogtest;

import android.app.activity;
import android.app.ProgressDialog;
import android.os.bundle;

public class MainActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState); 
        ProgressDialog pg = new ProgressDialog(MainActivity.this, 4);

        pg.show(MainActivity.this, null, "Searching...", false);

        try {
            Thread.sleep(2000);
        } catch (Exception e) {
            e.printStackTrace();
        }  

        pg.dismiss();
}

デバイスでコードを実行すると、ProgressDialog が開かれ、開いたままになり、2 秒後に閉じません。私は何を間違っていますか?


以下の回答の通りです。doInBackground メソッドの前後にそれぞれ onPreExecute() メソッドと onPostExecute() メソッドを追加しました。

2 つのメソッドのコードを次に示します。

ProgressDialog pd;

public void onPreExceute() {
    pd = new ProgressDialog(MainActivity.this);
    pd.show(MainActivity.this, "", "Searching...", false);
}

public void onPostExecute() {
    pd.dismiss();
}

問題はまだ解決していません。プログレスバーは閉じません。

4

3 に答える 3

0

次のコードはあなたのために働くでしょう、

 new AsyncTask<Integer, Integer, Boolean>()
             {
                 ProgressDialog progressDialog = null;

                 @Override
                 protected void onPreExecute()
                 {                         
                     progressDialog = ProgressDialog.show(MainActivity.this, "",
                             "Loading...");
                 }

                 @Override
                 protected Boolean doInBackground(Integer... params)
                 {
                     if (params == null)
                     {
                         return false;
                     }
                     try
                     {

                         Thread.sleep(2000);

                     }
                     catch (Exception e)
                     {

                         return false;
                     }

                     return true;
                 }

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

                 }
             }.execute();
于 2013-04-17T19:24:11.087 に答える