gpt4 book ai didi

java - 当单击我的按钮时,应用程序停止并在 android java 中出现错误

转载 作者:行者123 更新时间:2023-12-02 11:12:50 25 4
gpt4 key购买 nike

我是 Android 开发新手,当单击“getir”按钮时出现此错误。下类后就出错了。如何解决这个问题

我的代码:

public  void getir(View view)
{
cursor = myData.rawQuery("SELECT * FROM kolonVeri", null);
int gunIx = cursor.getColumnIndex("gun");
int vtarihIx = cursor.getColumnIndex("vTarih");
cursor.moveToFirst();

while (cursor != null)
{
System.out.println("VARDİYA: " + cursor.getString(gunIx));
System.out.println("TARİH: " + cursor.getString(vtarihIx));
cursor.moveToNext();
}

}

错误日志

E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.hakannacar.vardiyam, PID: 19541
java.lang.IllegalStateException: Could not execute method for android:onClick
om.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
Caused by: java.lang.reflect.InvocationTargetException
com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807) 
Caused by: android.database.CursorIndexOutOfBoundsException: Index 4 requested, with a size of 4

最佳答案

返回的 Cursor(例如,来自 rawQuery)不会为 null,对 null 的检查是无用的,并且如本例所示是危险的。

相反,您应该检查 Cursor move??? 方法以查看它们是否返回 true。

实际问题是,当只有 4 行(大小)时,您最终会尝试检索第 5 行(索引 4)的数据,因为 != null 的检查将始终为true,因此循环将继续到第 4 行之后。

因此您的代码可能是:-

public  void getir(View view)
{
cursor = myData.rawQuery("SELECT * FROM kolonVeri", null);
int gunIx = cursor.getColumnIndex("gun");
int vtarihIx = cursor.getColumnIndex("vTarih");
while (cursor.moveToNext()) {
System.out.println("VARDİYA: " + cursor.getString(gunIx));
System.out.println("TARİH: " + cursor.getString(vtarihIx));
}
}

关于java - 当单击我的按钮时,应用程序停止并在 android java 中出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50498833/

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