我有一个查询服务器数据库并返回结果列表的活动...查询应用程序时会在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。
我必须沿着缓存路线走吗?还是有另一种方式?
答案 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();
感谢您的贡献