gpt4 book ai didi

java - 调用 moveToFirst() 时光标抛出 NullPointerException

转载 作者:行者123 更新时间:2023-11-29 03:09:22 25 4
gpt4 key购买 nike

我最近在 Play 商店中收到了一份崩溃报告,如下所示:

java.lang.NullPointerException
at android.database.sqlite.SQLiteCursor.fillWindow(SQLiteCursor.java:144)
at android.database.sqlite.SQLiteCursor.getCount(SQLiteCursor.java:133)
at android.database.AbstractCursor.moveToPosition(AbstractCursor.java:196)
at android.database.AbstractCursor.moveToFirst(AbstractCursor.java:236)
at com.myapp.MyActivity(MyActivity.java:283)
at java.lang.Thread.run(Thread.java:856)

起初我以为是游标为空,但不可能是因为我在调用moveToFirst()之前检查它是否为空

mCursor = getCursorData();

if (mCursor != null)
mCursor.moveToFirst(); // Line 283

谁能告诉我它为什么会崩溃?

编辑:

上面的代码几乎是在它所包含的方法的开头。这是在 onConfigurationChanged() 中运行的,因此我可以使用光标中的新集更新 Activity 上的选项卡。

getCursorData() 是我的 SQLiteOpenHelper 中的一个方法:我使用 rawQuery 的原因是由于使用 INNER JOIN 的实际查询。查询本身很好,因为它在几年内一直运行良好,没有抛出此异常。

public Cursor getCursorData(long userformid) {
SQLiteDatabase db = getWritableDatabase();

return db.rawQuery("SELECT * FROM table WHERE _id=?", new String[]{
String.valueOf(id)
});
}

我现在更改了我的代码以在调用 moveToFirst() 之前检查 getCount()。我只是在等待遇到问题的用户更新到这个新版本,看看它是否有效。

最佳答案

你应该先检查数据的计数,所以使用这个:

if(mCursor!=null && mCursor.getCount()>0 ){
mCursor.moveToFirst();
}

关于java - 调用 moveToFirst() 时光标抛出 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30262002/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com