可能尚未为Cursor android初始化局部变量

问题描述 投票:0回答:1

我正在使用Cursor根据食物名称(paramString1)和食物组(paramString 2)从数据库中获取数据。食物名称来自用户输入。

但是发现的错误很少。

The local variable localCursor may not have been initialized.

在while(true)循环之后,每个localCursor都会发生此错误。最后2行中的arrayofString [i]也会发生同样的错误。

我的搜索食物方法代码

    public Cursor searchFoods(String paramString1, String paramString2)
  {
    Cursor localCursor;
    String str1 = paramString1.replace("'", "").replace("/", "").replace("\\", "").replace("%", "").replace(">", "").replace("<", "").replace(";", "").replace(":", "").replace("?", "");
    String str2 = "";
    String[] arrayOfString2;
    int i1;
    int i3;
    int i;
    int j;
    String[] arrayOfString1;
    if (str1.contains(" "))
    {
      arrayOfString2 = str1.split(" ");
      i1 = 0;
      int i2 = arrayOfString2.length;
      i3 = 0;
      if (i3 >= i2)
      {
        if (paramString2.length() > 0)
          str2 = str2 + " AND FdGrp_Cd='" + paramString2 + "' ";
        localCursor = db.rawQuery("SELECT _id, FdGrp_Cd, Long_Desc, NDB_No FROM FOOD_DES WHERE " + str2 + " ORDER BY FdGrp_Cd='0900' DESC, FdGrp_Cd='1100' DESC, FdGrp_Cd='0500' DESC,  FdGrp_Cd='0100' DESC,  FdGrp_Cd='1500' DESC,  FdGrp_Cd='1300' DESC,  FdGrp_Cd='1700' DESC, Long_Desc ASC LIMIT 300;", null);
        i = 0;
        j = localCursor.getColumnIndex("Long_Desc");
        arrayOfString1 = new String[localCursor.getCount()];
        localCursor.moveToFirst();

      }


    }
    while (true)
    {

      if (localCursor.isAfterLast())
      {
        return localCursor;
        String str4 = arrayOfString2[i3];
        if (str4.length() > 1)
        {
          String str5 = str4.substring(-1 + str4.length(), str4.length());
          if ((str5.toLowerCase().equals(str5)) && (str5.toLowerCase().equals("s")))
            str4 = str4.substring(0, -1 + str4.length());
        }
        if (i1 + 1 < arrayOfString2.length);
        for (str2 = str2 + " Long_Desc LIKE '%" + str4 + "%' AND "; ; str2 = str2 + " Long_Desc LIKE '%" + str4 + "%' ")
        {
          i1++;
          i3++;
        }
        if (str1.length() > 1)
        {
          int k = -1 + str1.length();
          int m = str1.length();
          String str3 = str1.substring(k, m);
          if ((str3.toLowerCase().equals(str3)) && (str3.toLowerCase().equals("s")))
          {
            int n = -1 + str1.length();
            str1 = str1.substring(0, n);
          }
        }
        str2 = " Long_Desc LIKE '%" + str1 + "%'";
      }
      arrayOfString1[i] = localCursor.getString(j);
      i++;
      localCursor.moveToNext();
    }
  }

感谢您的关注。

android cursor android-cursor
1个回答
0
投票

因为localCursor和arrayOfString1可能为null,所以您没有这些变量的默认值

© www.soinside.com 2019 - 2024. All rights reserved.