0

当我调用 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,但我不确定它是如何使用的。我的根本没有被调用。

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

谢谢!

4

2 回答 2

1

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

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

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

于 2012-11-11T22:33:42.270 回答
1

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

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

然后,在 onPostExecute 中,您将调用

progress.dismiss();

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

于 2012-11-11T22:36:10.857 回答