-2

いくつかの機能がバックステージで実行されているときに、サークルの進行状況ダイアログを表示したいと考えています。だから私はそのような一連のコードを書きます:

    pd = ProgressDialog.show(GridLayoutActivity.this, "","...");
    new Thread(new Runnable() {
    public void run() {
        someFunc();
        handler.sendEmptyMessage(0);// 执行耗时的方法之后发送消给handler
    }
    }).start();

しかし、progressDialog は転がりませんか? なぜ?

4

3 に答える 3

2

非同期タスクを試してみてください。ここにサンプルコードを投稿します。所有しているように変更できます

public class BackGround_Task extends AsyncTask<Void, Void, Void> {
        private final ProgressDialog dialog = new ProgressDialog(
                YourClassName.this);

        // can use UI thread here
        protected void onPreExecute() {
            this.dialog.setMessage("Loading...");
            this.dialog.setCancelable(false);
            this.dialog.show();
        }

        @Override
        protected Void doInBackground(Void... params) {
            //Your Background Task

            return null;
        }

        protected void onPostExecute(Void result) {

            //What will you do after the completion of Background process

            if (this.dialog.isShowing()) {
                this.dialog.dismiss();
            }
        }
    }
于 2012-09-04T08:53:25.257 に答える
0

次のようなものを使用してください:

ProgressDialog progressDialog = new ProgressDialog(GridLayoutActivity.this);
progressDialog.setMax(100);
progressDialog.setProgress(0);
progressDialog.setMessage("...");
progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progressDialog.show();

new Thread(new Runnable() {
public void run() {
    someFunc();
    handler.sendEmptyMessage(0);// 执行耗时的方法之后发送消给handler
}
}).start();
于 2012-09-04T08:52:46.587 に答える
0

try ブロックの後にハンドラー メッセージを送信します。次のように使用します。

pd = ProgressDialog.show(SetFrames.this,"Loading", "Please Wait...",true);
           new Thread() {
               public void run() {
               try {
                 //your function
               }catch(Exception e)
               {
               }
               handler.sendEmptyMessage(0);
               pd.dismiss();
               }

               }.start();

private Handler handler = new Handler() {
        public void handleMessage(Message msg) {

        }
        };
于 2012-09-04T09:03:02.493 に答える