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

只要应用程序到达执行 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: 32448

java.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)



墨色风雨
浏览 102回答 1
1回答

偶然的你

问题是在使用之前关闭游标。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java