アプリのクラッシュと戦っています。助けを求める時が来ました...
初めて SQLite を使用しています。ListView に単純なイベント ログを表示しようとしています。
メイン アクティビティでは、小さな ListView にログが表示されます。それをクリックすると、全画面表示の ListView を表示する別のアクティビティが起動します。しかし、Preferences 画面から戻る際にも問題が発生します。したがって、問題はメインのアクティビティにあります。
メインのアクティビティは、アプリの起動時に正常に機能します。ただし、別のアクティビティから戻ると、次のようにクラッシュすることがあります。アクティビティを再開できません...既に閉じられているカーソルを再クエリしようとしています。解決策なしであらゆる種類のバリエーションを試しました。デバッグでは、onResume に到達することさえできないようです?
誰かが (onStart、onResume、onRestart) DB コードの各部分がどこに行くべきかを指摘できますか? 手がかりはありますか?
私は、このコードが非推奨の手法に基づいていることを知っています。しかし、ローダーの作成について心配する前に、それを機能させたいと思っています。
どんな助けでも大歓迎です。私は持っている...
public class MainActivity extends Activity implements ...{
private ListView logView;
private SQLiteDatabase db;
private DBAdapter dbAdapter;
private Cursor cursor;
private SimpleCursorAdapter logAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
}
@Override
protected void onStart() {
super.onStart();
...
}
@Override
protected void onRestart() {
super.onRestart();
}
@Override
protected void onResume() {
super.onResume();
dbAdapter = new DBAdapter(this);
db = dbAdapter.getReadableDatabase();
cursor = db.query("log", null, null, null, null, null, "_id ASC");
startManagingCursor(cursor);
Log.i(TAG, "cursor="+cursor.toString());
String[] from = { "entry"};
int[] to = { R.id.row_entry };
logAdapter = new SimpleCursorAdapter(this, R.layout.log_row, cursor, from, to);
logView.setAdapter(logAdapter);
logAdapter.notifyDataSetChanged();
logView.setSelection(logView.getCount()-1);
}
@Override
protected void onPause() {
super.onPause();
}
@Override
protected void onStop() {
super.onStop();
}
...
}