这是我的第一个Android应用程序,
我在按钮点击时调用函数result
,但由于调用findTimeTable
需要时间我想要显示进度条但由于某种原因,进度条无法显示直到对话框之前的最后一刻创建,这打败了我显示该时间段的进度条的目的。事实上,只有当我没有将他们的知名度恢复到原来的状态时,才能看到最后一刻。
public void result(View view) throws IOException {
findViewById(R.id.loadingPanel).setVisibility(View.VISIBLE);
findViewById(R.id.chooseFile).setVisibility(View.GONE);
findViewById(R.id.chooseDay).setVisibility(View.GONE);
findViewById(R.id.chooseTime).setVisibility(View.GONE);
findViewById(R.id.findFaculty).setVisibility(View.GONE);
String n = findTimetable(index_day, index_time);
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("hello" +n);
builder.setCancelable(false);
builder.setPositiveButton("OK",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i){
}
});
final Dialog mDialog = builder.create();
mDialog.show();
findViewById(R.id.loadingPanel).setVisibility(View.GONE);
findViewById(R.id.chooseFile).setVisibility(View.VISIBLE);
findViewById(R.id.chooseDay).setVisibility(View.VISIBLE);
findViewById(R.id.chooseTime).setVisibility(View.VISIBLE);
findViewById(R.id.findFaculty).setVisibility(View.VISIBLE);
}
我找到了相关的答案android progress bar not showing
但由于我不熟悉编程中的线程,因此我无法在代码中正确实现它
请帮忙。
答案 0 :(得分:0)
使用AsyncTask进行繁重的comupting并在其Pre / Post状态中添加进度条,如果您选择从那里更新GUI,则需要在UI Thread上运行该代码。
示例AsyncTask:
private class LongOperation extends AsyncTask<String, Void, String> {
@Override
protected void onPreExecute() {
// Start progressbar
}
@Override
protected String doInBackground(String... params) {
// Computing goes here
return null;
}
@Override
protected void onPostExecute(String result) {
// Stop progressbar
UpdateMyGUI();
}
@Override
protected void onProgressUpdate(Void... values) {
// Update progressbar (?)
}
}
private void updateMyGUI(){
runOnUiThread (new Runnable() {
public void run() {
// Update GUI Here.
}
});
}