Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/215.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android ProgressDialog关闭后如何立即执行指令/方法?_Android_Progressdialog - Fatal编程技术网

Android ProgressDialog关闭后如何立即执行指令/方法?

Android ProgressDialog关闭后如何立即执行指令/方法?,android,progressdialog,Android,Progressdialog,我正在尝试执行doSomeWork方法;ProgressDialog在我的方法打印中解散后;它似乎与另一种方法重叠,并且对话框未显示。如果我评论方法doSomeWork;对话框将正确显示,直到线程完成 这是我的印刷方法 他是我工作的方法: 在这里,您可以看到我如何调用这两个方法: private OnClickListener onClickPrint = new OnClickListener() { public void onClick(final View v) {

我正在尝试执行doSomeWork方法;ProgressDialog在我的方法打印中解散后;它似乎与另一种方法重叠,并且对话框未显示。如果我评论方法doSomeWork;对话框将正确显示,直到线程完成

这是我的印刷方法

他是我工作的方法:

在这里,您可以看到我如何调用这两个方法:

    private OnClickListener onClickPrint = new OnClickListener() {

    public void onClick(final View v) {

            Log.d("Button","Clicked on Print Order Button");

                    printing();
                    doSomeWork();

有人知道我怎样才能在打印时执行doSomeWork吗;将完全完成吗?

您可以使用异步任务,而不是使用线程。在preexecute方法中显示进度对话框在完成打印操作后在后台方法中调用打印方法在postexecute方法中调用doSomeWork。

您可以使用异步任务,而不是使用线程。在preexecute方法中显示进度对话框在完成打印操作后在后台方法中调用打印方法在postexecute方法中调用doSomeWork。

您可以在android中使用该处理程序。例如,考虑下面的代码。您可以关闭处理程序中的对话框。愿它对你有用

private void printing(){
  Thread receiptPrint = new Thread(new Runnable() {

        @Override
        public void run() {
            retrieveEmails();

            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                  try{
                      //here your code executes
                      //after code executes do following:
                      uiHandler.sendEmptyMessage(0);
                  }catch(Exception ex){
                      errorHandler.sendEmptyMessage(0);
                  }
                }
            });

        }
  });
  receiptPrint.start();
}

final Handler uiHandler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
            //here execute doSomeWork()
    }
};

final Handler errorHandler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
            //do other stuff
    }
};
您可以在android中使用该处理程序。例如,考虑下面的代码。您可以关闭处理程序中的对话框。愿它对你有用

private void printing(){
  Thread receiptPrint = new Thread(new Runnable() {

        @Override
        public void run() {
            retrieveEmails();

            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                  try{
                      //here your code executes
                      //after code executes do following:
                      uiHandler.sendEmptyMessage(0);
                  }catch(Exception ex){
                      errorHandler.sendEmptyMessage(0);
                  }
                }
            });

        }
  });
  receiptPrint.start();
}

final Handler uiHandler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
            //here execute doSomeWork()
    }
};

final Handler errorHandler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
            //do other stuff
    }
};

这是异步任务的目的之一。它看起来与此类似:

public void onClick(final View v) {

    new AsyncTask<Void, Void, Void>() {

        @Override
        protected void onPreExecute() {

            //Show your progress dialog in here
            super.onPreExecute();
        }

        @Override
        protected Void doInBackground( Void... params ) {

            printing();
            return null;
        }

        @Override
        protected void onPostExecute( Void result ) {

            //Dismiss your progress dialog here
            doSomeWork();
        }
    }.execute();
}

这是异步任务的目的之一。它看起来与此类似:

public void onClick(final View v) {

    new AsyncTask<Void, Void, Void>() {

        @Override
        protected void onPreExecute() {

            //Show your progress dialog in here
            super.onPreExecute();
        }

        @Override
        protected Void doInBackground( Void... params ) {

            printing();
            return null;
        }

        @Override
        protected void onPostExecute( Void result ) {

            //Dismiss your progress dialog here
            doSomeWork();
        }
    }.execute();
}