【问题标题】:Do not allow users to cancel Progress Dialog [closed]不允许用户取消进度对话框 [关闭]
【发布时间】:2014-10-05 21:05:01
【问题描述】:

在我的应用程序中,如果我在进度对话框之外单击或按下后退按钮,则进度对话框会在结束作业之前退出。如何避免这种行为?

代码如下:

private class DownloadDataFromServer extends AsyncTask<String, Integer, String> {
    ProgressDialog dialog;

    @Override
    protected void onPreExecute() {
        // Instantiate ProgressDialog and Set style to STYLE_HORIZONTAL
        dialog = new ProgressDialog(HomePage.this);
        dialog.setIndeterminate(false);
        dialog.setMax(100);
        dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        dialog.setCancelable(true);
        dialog.setTitle("Downloading");
        dialog.setMessage("Please wait...");
        dialog.show();

        super.onPreExecute();
    }

    @Override
    protected String doInBackground(String... urls) {
        // My code
    }

    protected void onProgressUpdate(Integer... progress) {
        // Update the progress
        dialog.setProgress(progress[0]);
    }

    @Override
    protected void onPostExecute(String result) {
        // My code
        dialog.dismiss();
}

【问题讨论】:

  • 我不明白。 Do not allow users to cancel,但你明确设置了dialog.setCancelable(true);?您在使用该方法之前没有阅读该方法的文档吗?
  • 不,这是复制粘贴,我不介意。对不起

标签: android dialog block progressdialog back-button


【解决方案1】:

只需将dialog.setCancelable(true); 更改为dialog.setCancelable(false);

【讨论】:

    【解决方案2】:

    在受保护的 void PreExecute 方法中更改此属性

    dialog.setCancelable(true);
    

    到

    dialog.setCancelable(false);
    

    这应该可以解决问题。

    【讨论】:

      【解决方案3】:

      如果您只想在用户在视图边界之外单击时禁用取消,请将此行添加到 onPreExecute 中的初始化程序:

      dialog.setCanceledOnTouchOutside(false);
      

      【讨论】:

        猜你喜欢
        • 2013-07-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多