2017-08-26 13 views
1

IはSW600ランドの場合とSW600java.lang.IllegalStateException:再オープンする姿勢変化に既に閉じたオブジェクトを試み

の1断片の場合には2つのフラグメント(2ペイン)を膨張させる1つの活性を使用していフラグメントの

両方が実装LoaderManager.LoaderCallbacks


私は01でカーソルを閉じ

次いで
getActivity().getSupportLoaderManager().initLoader(pm2_MAIN_LOADER_ID, null, this); 

onStartで)によってローダを初期化してい(最後の行で)私にエラーが出るので、私はStackOverflowで見つけた答えを別の場所に閉じようとしました。同じエラーを返す

私はカーソルを閉じることができますか?

+1

もしあなたが 'CursorLoader'を使っているのであれば、自分自身を' Cursor'で閉じるべきではありません。 'CursorLoader'がそれを処理します。 –

+0

ありがとう、おそらくGoogleの中級コースで時代遅れだったかもしれません。また、それを受け入れて投票するための答えとして入れることもできます –

答えて

1

LoaderフレームワークでCursorLoaderを使用する場合は、自分でCursorclose()とすべきではありません。 CursorLoaderがそれを処理します。

CursorLoaderためのドキュメントはこれを具体的に言及していませんが、Loadersのための一般的なドキュメントは、Using the LoaderManager Callbacksの下でそれを注意しセクションをonLoadFinished。

ローダーは、アプリケーションがアプリケーションを使用しなくなったことを知ったらデータを解放します。たとえば、データがCursorLoaderのカーソルである場合は、自分でclose()と呼ぶべきではありません。カーソルがCursorAdapterに配置されている場合は、swapCursor()メソッドを使用して、古いCursorが閉じられないようにする必要があります。

関連する問題