从对话框中调用ProgressDialog

时间:2015-03-24 09:59:23

标签: android android-asynctask dialog progressdialog

我想在我的应用中提供搜索功能。 用户可以打开搜索对话框,输入值,然后单击“确定”按钮开始搜索。 由于搜索操作可能需要更长时间,我希望在处理搜索时显示进度对话框。

如果用户现在按下确定按钮,搜索对话框将保持在顶部,但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) - 也不起作用。

任何想法可能出错?

谢谢! 格哈德

1 个答案:

答案 0 :(得分:1)

试试这个: 声明一个像这样的全局变量:

ProgressDialog progress;

只要您想要显示进度,请粘贴以下代码:

progress = ProgressDialog.show(this, "Please wait",
                "Loading..", true);

完成后,只需将其解雇:

progress.dismiss();