0

我有一个查询服务器数据库并返回结果列表的活动...查询应用程序时会在 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。

我必须走缓存路线吗?还是有其他方法?

4

2 回答 2

0

1.)为了防止再次查询数据库,您可以简单地将这些数据缓存在本地 SQLite 数据库中,正如 Tom Dignan 所提到的。

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

于 2012-10-13T15:54:19.717 回答
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();

感谢您的贡献

于 2012-10-13T23:29:35.427 回答