我在调用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,我也不确定它是如何使用的。我根本就没有被召唤过。
它的正确用法是什么?如何确保对话框正确打开和关闭?
谢谢!
答案 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();
删除它。如果您需要看起来更自定义的内容,可以将进度对话框子类化以添加自定义图像/其他自定义。