現在、私はフラグメントのリストビューを作成中です。リストビューはCursorloaderによってロードされますが、ContentManagerはロードされません。だから、コードは次のようになりますし、それが動作します:Cursorloaderでデータベースをクローズする方法
@Override
public Loader<Cursor> onCreateLoader(int arg0, Bundle arg1) {
Log.d("SoapERP", "onCreateLoader");
CursorLoader loader = new CursorLoader(getActivity()) {
final DBHelper dbhelper1= new DBHelper(getActivity());
@Override
public Cursor loadInBackground() {
Cursor c = null;
dbhelper1.open();
c = dbhelper1.fetchAllMatnameswithID();
// dbhelper1.close();
return c;
}
};
return loader;
私の問題は、私は、データベースが閉じられていませんでしたLogCat - エラー・メッセージを取得することです。しかし、私がdbhelper.close()を使うと、 "データベースは既に閉じられています"というエラーが表示されます。これは、returnステートメントの直前であるためにもわかります。 return文のコードに到達できないと、DBHelper dbhelper1 finalを宣言すると、プログラムはlogcatの情報なしでクラッシュします。だから私の失敗は何ですか?
エラーを防止するために、私はコンテンツプロバイダでそれをやろうとしましたが、問題はまだ同じです。しかし、今私は問題に少し近づいていると思う - スレッド。私は他のスレッドがまだデータを収集している間にデータベースを閉じています。今私にはこれに適切な解決策を得る方法が完全に不明です。 –