为了账号安全,请及时绑定邮箱和手机立即绑定

为什么 cursor.getString() 行会使应用程序崩溃?

为什么 cursor.getString() 行会使应用程序崩溃?

墨色风雨 2023-03-17 13:47:10
只要应用程序到达执行 cursor.getString() 的行,它就会崩溃。我已经尝试了 cursor.getString() 和 cursor.getString(cursor.getColumnIndex(" ")) 但它仍然崩溃它执行的方法:public void populateView(){    Cursor data = myDb.getData();    data.moveToFirst();    String title = data.getString(data.getColumnIndex(1));    newsList.add(new NewsItem(R.drawable.ic_home_black_24dp, title, "Description"));    mAdapter = new NewsItemAdapter(newsList);    mRecyclerView.setAdapter(mAdapter);}DatabaseHelper类中的方法:public Cursor getData(){    SQLiteDatabase db = this.getReadableDatabase();    String query = "SELECT * FROM " + TABLE_NAME_REPORT;    Cursor data = db.rawQuery(query, null);    data.close();    db.close();    return data;}PS NewsItem 类接受这些参数:public NewsItem(int imageResource, String title, String desc){    mImageResource = imageResource;    mTitle = title;    mDescription = desc;}Process: com.example.reportingapplication, PID: 32448java.lang.IllegalStateException: attempt to re-open an already-closed object: SQLiteQuery: SELECT * FROM report_data    at android.database.sqlite.SQLiteClosable.acquireReference(SQLiteClosable.java:55)    at android.database.sqlite.SQLiteQuery.fillWindow(SQLiteQuery.java:58)    at android.database.sqlite.SQLiteCursor.fillWindow(SQLiteCursor.java:151)    at android.database.sqlite.SQLiteCursor.getCount(SQLiteCursor.java:139)    at android.database.AbstractCursor.moveToPosition(AbstractCursor.java:220)    at android.database.AbstractCursor.moveToFirst(AbstractCursor.java:265)    at com.example.reportingapplication.Fragments.HomeFragment.populateView(HomeFragment.java:104)    at com.example.reportingapplication.Fragments.HomeFragment$1.onClick(HomeFragment.java:58)
查看完整描述

1 回答

?
偶然的你

TA贡献1841条经验 获得超3个赞

问题是在使用之前关闭游标。


查看完整回答
反对 回复 2023-03-17
  • 1 回答
  • 0 关注
  • 101 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信