用户按下后退按钮时删除ProgressDialog

时间:2012-10-13 15:38:34

标签: java android

我有一个查询服务器数据库并返回结果列表的活动...查询应用程序时会在onCreate方法上显示一个简单的progressDialog,如下所示:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

//display progress dialog while querying server for values
        final ProgressDialog dialog = ProgressDialog.show(this,"","Retrieving listings please wait...");
        dialog.setCancelable(true);
        dialog.show();

如果用户点击列表中的某个项目,则会打开另一个活动placeDetails。完成后,用户可以按后退按钮返回上一个显示列表的活动。

当我自然地测试它时,它显示上面的对话框并将查询发送回服务器,即使列表可以在progressDialog的后台看到。

我想知道的是,当用户按下后退按钮时,如何防止再次查询数据库以及显示上述progressDialog。

我必须沿着缓存路线走吗?还是有另一种方式?

2 个答案:

答案 0 :(得分:0)

1。)为了防止再次查询数据库,您可以像Tom Dignan所提​​到的那样将这些数据缓存在本地SQLite数据库中。

2.。)为了防止在用户按下后退按钮时显示progressDialog,只需覆盖当前活动的onBackPressed()方法(按下后退)并将Intent设置为progresDialog之前的活动。我相信甚至有一种方法可以做到这一点,这样你就不会启动该活动的新实例,只需访问缓存版本。

答案 1 :(得分:0)

我设法解决了这个问题,缺少的链接是我不知道如何检查以下代码帮助的对话框窗口:

//first declare the dialog so its accessible globally through out the class
public class ListPlaces extends ListActivity {
 ProgressDialog dialog;

然后在onCreate上首先检查对话框是否存在

if(dialog == null){
            dialog = ProgressDialog.show(this,"","Retrieving listings please wait...");
            //display progress dialog while querying server for values
            dialog.setCancelable(true);
            dialog.show();
        } 

错误是我正在使用

dialog.hide();
而不是     dialog.dismiss();

感谢您的贡献