当我尝试在onPreExecute中的AsyncTask中显示对话框时,不会出现对话框

时间:2012-11-11 22:28:29

标签: android android-asynctask

我在调用AsynchTask时尝试向用户显示一个对话框。

我正在尝试使用onPreExecute方法:

     protected void onPreExecute(Long result) 
     {
         dialog = new Dialog(UpdateProfileActivity.this);

         dialog.setContentView(R.layout.please_wait);
         dialog.setTitle("Updating account details...");

         dialog.show();      
     }

然后在onPostExecute方法中执行以下操作:

    @Override
    protected void onPostExecute(String result) 
    {    
        try {
            dialog.dismiss();
        } catch (Exception ee) {
            // nothing
        }

但是对话框没有显示出来。我查看了文档,即使有提到onPreExecute,我也不确定它是如何使用的。我根本就没有被召唤过。

它的正确用法是什么?如何确保对话框正确打开和关闭?

谢谢!

2 个答案:

答案 0 :(得分:1)

您的onPreExecute方法永远不会被调用,因为您没有正确地覆盖它。 正确的方法签名应该是:

@Override
protected void onPreExecute(){
    //Your code
}

作为一般提示,在覆盖方法时始终使用@Override注释。当您尝试覆盖不存在的方法或键入错误时,会出现错误。

答案 1 :(得分:1)

Niek对未执行的预执行是正确的。但是,在我看来,你可能想要的是ProgressDialog。您可以像这样设置

ProgressDialog progress = new ProgressDialog(context);
progress.setMessage("Loading Message");
progress.setTitle("Title");
progress.show();

然后,在onPostExecute中,您将调用

progress.dismiss();

删除它。如果您需要看起来更自定义的内容,可以将进度对话框子类化以添加自定义图像/其他自定义。