【发布时间】:2022-01-25 07:21:22
【问题描述】:
我有一些字符串,我在我的第一个活动中写入 Edittext,我试图通过按下按钮将其发送到另一个活动上的 Edittext,但它给了我一个错误“java.lang.RuntimeException:无法启动活动 ComponentInfo{com.example.kp_orginizer/com.example.kp_orginizer.calendar}: android.database.CursorIndexOutOfBoundsException: 请求索引 0,大小为 0"
谁能帮帮我
这是我在第一个 Activity 上的 onCLick 方法:
public void calendarOR(View v, AdapterView<?> parent, int position, long id) {
String data = cala.getText().toString();
Intent intent = new Intent(this, calendar.class);
intent.putExtra("id",data);
startActivity(intent);
我的第二种方法:
Bundle extras = getIntent().getExtras();
if (extras != null) {
userId = extras.getString("id");
}
if (userId !=null) {
userCursor = db.rawQuery("select * from " + dbelper.TABLE + " where " + dbelper.COLUMN_ID + "=?", new String[]{userId});
userCursor.moveToFirst();
date.setText(userCursor.getString(1));
userCursor.close();
}
它在抱怨“date.setText(userCursor.getString(1));”字符串
这是一个错误代码:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.kp_orginizer, PID: 7787
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.kp_orginizer/com.example.kp_orginizer.calendar}: android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3270)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7356)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
Caused by: android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0
at android.database.AbstractCursor.checkPosition(AbstractCursor.java:515)
at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:138)
at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:52)
at com.example.kp_orginizer.calendar.onCreate(calendar.java:94)
at android.app.Activity.performCreate(Activity.java:7802)
at android.app.Activity.performCreate(Activity.java:7791)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1299)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3245)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7356)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
这就是我填充数据库的方式:
public void save(View view) {
ContentValues cv = new ContentValues();
int idishnik = 1;
cv.put(dbelper.COLUMN_NOTE, note.getText().toString());
cv.put(dbelper.COLUMN_DATE, cala.getText().toString());
cv.put(dbelper.ID_TABLITSY, idishnik);
if (userId > 0) {
db.update(dbelper.TABLE, cv, dbelper.COLUMN_ID + "=" + userId, null);
} else {
db.insert(dbelper.TABLE, null, cv);
}
goHome();
}
【问题讨论】:
-
我现在添加了我的方法来填充数据库,如果我没听错的话
-
您是否尝试过在数据库中设置 userId 并在访问时再次打印以确保它们匹配?
-
试试
System.out.println("DEBUG: adding/accessing userId = " + userId);然后在logcat中搜索“DEBUG:” -
您发送的用户 ID 是
calaEditText 中的任何内容。如果这不是您打算发送的内容,则需要修复该逻辑。 -
很高兴你能弄明白,希望在这个过程中学到一些调试技术!我会为此添加一个答案。
标签: java android database android-intent