我想在我的应用中提供搜索功能。 用户可以打开搜索对话框,输入值,然后单击“确定”按钮开始搜索。 由于搜索操作可能需要更长时间,我希望在处理搜索时显示进度对话框。
如果用户现在按下确定按钮,搜索对话框将保持在顶部,但ProgressDialog不可见。
public ProgressDialog pDialog;
private void performSearch() {
pDialog = new ProgressDialog(MyActivity.this);
pDialog.setTitle(getString(R.string.searchCard));
pDialog.setMessage (Html.fromHtml(getString(R.string.searchingCard)));
pDialog.setIndeterminate(false);
pDialog.setCancelable(false);
pDialog.show();
// do the search part here …
}
private void searchCard() {
final Dialog search = new Dialog(MyActivity.this);
search.requestWindowFeature(Window.FEATURE_LEFT_ICON);
search.setContentView(R.layout.dialog_searchcard);
final EditText etSearch = (EditText) search.findViewById(R.id.edSearch);
search.setTitle(getString(R.string.search));
search.setCanceledOnTouchOutside(false);
Button okButton = (Button) search.findViewById(R.id.ok);
okButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
searchString = etSearch.getText().toString();
performSearch();
search.dismiss();
}
});
Button cancelButton = (Button) search.findViewById(R.id.cancel);
cancelButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
search.dismiss();
}
});
search.show();
search.setFeatureDrawableResource(Window.FEATURE_LEFT_ICON, R.drawable.ic_search_color);
}
在第二个例子中(未在此代码中显示)我也尝试实现AsyncTask(在AsyncTask的onPreExecute中显示ProgressDialog) - 也不起作用。
任何想法可能出错?
谢谢! 格哈德
答案 0 :(得分:1)
试试这个: 声明一个像这样的全局变量:
ProgressDialog progress;
只要您想要显示进度,请粘贴以下代码:
progress = ProgressDialog.show(this, "Please wait",
"Loading..", true);
完成后,只需将其解雇:
progress.dismiss();