【问题标题】:Android Coursor out of boundsAndroid 游标越界
【发布时间】:2016-05-14 10:23:23
【问题描述】:

代码运行良好,比我向数据库中添加了 2 多条记录,它开始出现问题。 这是我的代码:

 //Workout Name Decider
    public String Workout_Name(String id_S) {
        String workout_name = "";
        String template = "";
        String holder = "";

        if (id_S.equals("REST")) {
            workout_name = "Rest";
        } else {
            String[] allColumns = new String[]{
                    Dbhelper.WORKOUTS_ID,
                    Dbhelper.WORKOUT_NAME,
                    Dbhelper.WORKOUT_TIME

            };
            Cursor cursor = database.query(Dbhelper.TABLE_WORKOUTS_STOCK, allColumns, "_id=\'" + id_S + "\'", null, null, null, null, "1");

            if (cursor != null) {
                cursor.moveToFirst();
                //id = cursor.getString(2);

                if (cursor.getString(1).contains("SPARTAN SPECIALE ADVANCED") || cursor.getString(1).contains("SPARTAN SPECIALE BEGINNER") || cursor.getString(1).contains("TRICEPS SMASHER REPS")) {
                    template = "(reps)";
                } else {
                    template = "(" + cursor.getString(2) + ")";
                }

            }


            try {
                workout_name_shortener = cursor.getString(1).split("\\s+");
            } catch (PatternSyntaxException ex) {
            }

            int counter = 0;

            for (int i = 0; i < workout_name_shortener.length; i++) {

                if (workout_name_shortener[i].equals("TIMER") || workout_name_shortener[i].equals("REPS") || workout_name_shortener[i].equals("ADVANCED") || workout_name_shortener[i].equals("BEGINNER") && counter != 0) {
                    break;
                } else {
                    holder += workout_name_shortener[i] + " ";
                }

                counter++;
            }

            workout_name = holder + template;


            cursor.close();
        }


        return workout_name;
    }

这是错误:

致命异常:主要 进程:com.spartanbodyweightworkouts,PID:9198 java.lang.RuntimeException:无法启动活动 组件信息{com.spartanbodyweightworkouts/com.spartanbodyweightworkouts.tabs.plan.planAdapter.planAdapter.PlanAdapter}: android.database.CursorIndexOutOfBoundsException:请求索引 0, 大小为 0 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 在 android.app.ActivityThread.-wrap11(ActivityThread.java) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:148) 在 android.app.ActivityThread.main(ActivityThread.java:5417) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 引起:android.database.CursorIndexOutOfBoundsException:索引 0 请求,大小为 0.....

【问题讨论】:

    标签: java android


    【解决方案1】:

    将您的 if 语句更改为:

    if (cursor != null && cursor.moveToNext()) {
      //id = cursor.getString(2);
      if (cursor.getString(1).contains("SPARTAN SPECIALE ADVANCED") || cursor.getString(1).contains("SPARTAN SPECIALE BEGINNER") || cursor.getString(1).contains("TRICEPS SMASHER REPS")) {
        template = "(reps)";
      } else {
        template = "(" + cursor.getString(2) + ")";
      }
    }
    

    【讨论】:

    • 谢谢,但上面的代码正在运行,问题出在我的数据库中。我没有关闭记录,它正在混合它们。
    【解决方案2】:

    代码正在运行,我在将数据放入表格时出错了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-08
      • 1970-01-01
      • 2021-08-20
      • 1970-01-01
      • 1970-01-01
      • 2013-12-15
      • 1970-01-01
      相关资源
      最近更新 更多