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

リンクが見つからないという問題を解決することができました。ダイアログ ウィンドウを確認する方法がわからなかったので、次のコードが役に立ちました。

//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 に答える
0

1.) データベースが再度クエリされないようにするには、Tom Dignan が述べたように、このデータをローカルの SQLite データベースにキャッシュするだけです。

2.) ユーザーが戻るボタンを押したときに progressDialog が表示されないようにするには、現在のアクティビティの onBackPressed() メソッドをオーバーライドし (戻るボタンを押したとき)、progresDialog の前にあるアクティビティにインテントを設定します。そのアクティビティの新しいインスタンスを開始するのではなく、単にキャッシュされたバージョンにアクセスするために、これを行う方法さえあると思います。

于 2012-10-13T15:54:19.717 に答える