我想在onclicklistener中显示进度对话框,同时调用另一个函数来进行一些计算。这个函数在另一个类中。 这是我的代码:
progressDialog = new ProgressDialog(Game.this);
progressDialog.setMessage(getString(R.string.loading)); // Setting Message
progressDialog.setTitle(getString(R.string.checking)); // Setting Title
progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); // Progress Dialog Style Spinner
progressDialog.show(); // Display Progress Dialog
progressDialog.setCancelable(false);
然后我正在调用另一个函数:
Solver.dosolve();
上面的函数应该填充数组中的一些元素(solve_array)。然后我正在对这个数组做一个动作。 (这大约需要3秒钟。)
solved_array.remove(solved_array.size() - 1);
然后解雇进度对话框:
if(progressDialog!= null && progressDialog.isShowing()) {
progressDialog.dismiss();
}
测试结果:
我们非常感谢您在调用其他功能时显示进度对话框的建议。
答案 0 :(得分:0)
您需要创建一个新线程来运行您的功能。
Thread t=new Thread(new Runnable() {
@Override
public void run() {
//update UI show dialog for example
MyActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
progressDialog.show;
}
});
try {
//simulating expensive function
System.out.println("function started");
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("function finished");
//update the UI
MyActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
progressDialog.dismiss;
}
});
}
})
使用t.start()
和t=null
来启动和取消您的主题。
你也可以去AsyncTask