0

私はListActivityを持っています。ListActivityのレイアウトは次のとおりです。

<ListView android:id="@android:id/list"
           android:layout_width="match_parent"
           android:layout_height="match_parent"
           android:layout_weight="1"
           android:drawSelectorOnTop="false"
           />

<TextView android:id="@android:id/empty"
           android:layout_width="match_parent"
           android:layout_height="match_parent"
           android:text="No elements found"
           android:gravity="center"  
           />

ListActivityは、CursorAdapterに関連しています。

ユーザーがリストのアイテムを選択すると、別のアクティビティを開始して、選択したアイテムの詳細を表示します。

Intent intent = new Intent(MyListActivity.this, DetailActivity.class);
startActivity(intent);

ユーザーがリストの項目を選択する場合を除いて、すべてが正常に機能します。「詳細アクティビティ」を開始する前に、「@ android:id/empty」IDのテキストビューの「要素が見つかりません」というメッセージが表示されます。

これは、onPauseメソッドでカーソルを閉じたために発生しています。しかし、私は現在の活動を離れているので、それを閉じなければならないと思います。

@Override
protected void onPause()
{
    super.onPause();            

    if (this.cursor != null)
        this.cursor.close();

    this.db.close();        
}

現在のアクティビティを終了するときに「@android:id / empty」のテキストビューを表示したくない場合はどうすればよいですか?

ありがとう

4

1 に答える 1

1

システムに管理させてください。

getActivity().startManagingCursor(yourCursor);

カーソルを呼び出した直後にそのコードを(適切なカーソル変数名を使用して)呼び出すと、システムがカーソルの管理を行い、不要になったと判断したときにカーソルを閉じます。

もう1つのオプションは、そのコードをonStop、アクティビティがユーザーに表示されなくなったときに呼び出されるメソッドに移動することです。

于 2012-07-09T15:38:53.837 に答える