android - CursorIndexOutOfBoundsException : Index 0 requested,,大小为 0。错误 - Android

标签 android sqlite exception expandablelistview

我试图在 expandableListView 中获取子项的位置 ID,并根据单击的子项开始另一个类,我正在这样做:

    @Override
    public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) 
    {
        // TODO Auto-generated method stub
        super.onChildClick(parent, v, groupPosition, childPosition, id);
        Intent i = new Intent(this, SavedEntries.class);
        i.putExtra("_id", id);
        startActivityForResult(i, ACTIVITY_EDIT);
        return super.onChildClick(parent, v, groupPosition, childPosition, id);
    }

但我一直收到这个错误:

01-05 13:14:28.232: E/AndroidRuntime(316): FATAL EXCEPTION: main
01-05 13:14:28.232: E/AndroidRuntime(316): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.x17.projects.strikezone/com.x17.projects.strikezone.SavedEntries}: android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0
01-05 13:14:28.232: E/AndroidRuntime(316):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
01-05 13:14:28.232: E/AndroidRuntime(316):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
01-05 13:14:28.232: E/AndroidRuntime(316):  at android.app.ActivityThread.access$2300(ActivityThread.java:125)
01-05 13:14:28.232: E/AndroidRuntime(316):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
01-05 13:14:28.232: E/AndroidRuntime(316):  at android.os.Handler.dispatchMessage(Handler.java:99)
01-05 13:14:28.232: E/AndroidRuntime(316):  at android.os.Looper.loop(Looper.java:123)
01-05 13:14:28.232: E/AndroidRuntime(316):  at android.app.ActivityThread.main(ActivityThread.java:4627)
01-05 13:14:28.232: E/AndroidRuntime(316):  at java.lang.reflect.Method.invokeNative(Native Method)
01-05 13:14:28.232: E/AndroidRuntime(316):  at java.lang.reflect.Method.invoke(Method.java:521)
01-05 13:14:28.232: E/AndroidRuntime(316):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
01-05 13:14:28.232: E/AndroidRuntime(316):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
01-05 13:14:28.232: E/AndroidRuntime(316):  at dalvik.system.NativeStart.main(Native Method)
01-05 13:14:28.232: E/AndroidRuntime(316): Caused by: android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0
01-05 13:14:28.232: E/AndroidRuntime(316):  at android.database.AbstractCursor.checkPosition(AbstractCursor.java:580)
01-05 13:14:28.232: E/AndroidRuntime(316):  at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:214)
01-05 13:14:28.232: E/AndroidRuntime(316):  at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:41)
01-05 13:14:28.232: E/AndroidRuntime(316):  at com.x17.projects.strikezone.SavedEntries.getDateRow(SavedEntries.java:56)
01-05 13:14:28.232: E/AndroidRuntime(316):  at com.x17.projects.strikezone.SavedEntries.onCreate(SavedEntries.java:48)
01-05 13:14:28.232: E/AndroidRuntime(316):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
01-05 13:14:28.232: E/AndroidRuntime(316):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
01-05 13:14:28.232: E/AndroidRuntime(316):  ... 11 more

这是我将 id 发送到的地方:

Bundle extras = getIntent().getExtras();
mRowId = extras != null ? extras.getLong("_id") : null;

    private void getDateRow()
    {
        Cursor mCursor = mDbHelper.fetchRow(mRowId);
        date = mCursor.getString(0); //Line 56, this is where the error occurs.
        mCursor.close();
    }

这是上面的查询:

public Cursor fetchRow(long rowId)
    {
        Cursor cursor = mDb.rawQuery("SELECT date FROM entry WHERE _id=" + rowId, null);
        if(cursor != null)
        {
            cursor.moveToFirst();
        }
        return cursor;
    }

为什么会出现此错误?我在这里做错了什么?

提前致谢。

最佳答案

光标在空位置。遍历游标以获取行。

while(mCursor.moveToNext()) {
    date = mCursor.getString(0);
}

关于android - CursorIndexOutOfBoundsException : Index 0 requested,,大小为 0。错误 - Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8747791/

相关文章:

android - BottomSheetDialogFragment 在主题化时崩溃

android - 在嵌套 ScrollView 中使用水平回收器 View 时,折叠工具栏布局不起作用

java - 如何在sqlite数据库中插入数据类型日期(yyyy-MM-dd)并在android中检索两个日期之间的数据

validation - Camel 验证错误消息

java - main 方法中出现 StringIndexOutOfBoundsException 错误

android - 索尼 SmartWatch 2 自定义表盘自固件更新后损坏

android - 三星设备上的数据库错误

database - SQLite 临时数据库和 InMemory 数据库之间的区别

java - 正确使用Java异常

java - 虚拟设备中没有后退按钮