0

現在、ListActivity を使用しています。カーソルを使用して SQL からデータを取得し、SQL クエリの結果に従って ListView を作成しました。ListView 内のすべてのオブジェクトについて、そのオブジェクト (onListItemClick) を押すと、カーソルが読み取る SQL の値が変更され、新しいインテントが開きます (別のオブジェクトを押すと、SQL テーブル内の別の値が変更されます)。 . ListView を最新の状態に保つために、使用します

//adapter is the SimpleCursorAdapter I use
protected void onListItemClick(ListView l, View view, int position, long id) {
    super.onListItemClick(l, view, position, id);
    //change the data in sql
    ...
    //change the data end
    adapter.changeCursor(dbAdapter.getResult(id));
    adapter.notifyDataSetChanged();
    //create intent here
    //startActivity(intent)
}

問題は、同じオブジェクトを押し続けると、それが作成したインテントをそのままにしておくと、正常に動作することです。しかし、以前の意図を離れた後に別のオブジェクトを押すと、ListView は空になります。たとえば、オブジェクト a を押してインテント a に入り、インテント a を離れてリスト ビューに戻り (ListView は現在は問題ありません)、オブジェクト b を押してインテント b に入ります。インテント b を離れると、ListView は空になります。誰でもこの問題について何か考えがありますか? ありがとうございました。

4

1 に答える 1

2

データの一部が破壊されているようです。リスト作成コードを onResume に移動すると、戻ってくるたびにリストが再生成されるため、問題は解決すると思いますが、onCreate では、アクティビティが最初に作成されたときにのみ行われます。

百聞は一見に如かず。 アクティビティのライフサイクル

于 2012-04-15T04:02:49.703 に答える