Android 游标越界异常

Android 游标越界异常,android,cursor,radio-button,Android,Cursor,Radio Button,我正在从游标中提取数据。使用此光标,我正在填充单选按钮的文本。当显示活动时,它工作正常,但当我尝试选择单选按钮时,我再次尝试访问我的光标,此时我将光标移出边界异常。请帮帮我 Cursor cur=db.getForcemodLevelForMenuitem(mnuItmID); cur.moveToFirst(); while (cur.isAfterLast() == false) { cnt=1; //Level 1 if(c

我正在从游标中提取数据。使用此光标,我正在填充单选按钮的文本。当显示活动时,它工作正常,但当我尝试选择单选按钮时,我再次尝试访问我的光标,此时我将光标移出边界异常。请帮帮我

Cursor cur=db.getForcemodLevelForMenuitem(mnuItmID);            
   cur.moveToFirst();
   while (cur.isAfterLast() == false) {
     cnt=1;
     //Level 1
     if(cur.getInt(0)==1)
      {
       LinearLayout level1Layout=(LinearLayout)findViewById(R.id.level1Layout);
       level1Layout.setVisibility(View.VISIBLE);

   //ArrayList menuitemForcemodMapsLevel1=db.GetBaseObjectListFromDBWhere("MenuitemForcemodMapping", "MenuitemID= "+mnuItmID+ " and Level="+1);                    
        menuitemForcemodMapsLevel1=db.getForcemodDetailsForMenuitem(mnuItmID,1);
        RadioGroup level1_rg=(RadioGroup) findViewById(R.id.level1_rg);
        RadioButton[] rblevel1=new RadioButton[menuitemForcemodMapsLevel1.getCount()];

        menuitemForcemodMapsLevel1.moveToFirst();                   
            int i=0;
            while (menuitemForcemodMapsLevel1.isAfterLast() == false) { 

            rblevel1[i] =new RadioButton(AddPopupMenuItem.this);
            rblevel1[i].setText(menuitemForcemodMapsLevel1.getString(1).substring(0));              
            rblevel1[i].setTextColor(R.color.black);                        
            level1_rg.addView(rblevel1[i]);
            rblevel1[i].setOnClickListener(new OnClickListener() {                     

              @Override
                  public void onClick(View v) {
                 // TODO Auto-generated method stub 
                  menuitemForcemodMapsLevel1.moveToPosition(i);
                  forceModNameList.add(menuitemForcemodMapsLevel1.getString(1).substring(0));
                           }
                        });
                           i++;
                           menuitemForcemodMapsLevel1.moveToNext();
                           }                    
                           menuitemForcemodMapsLevel1.close();
                           rblevel1=null;
                         }
                       }
                        cur.moveToNext();
                      }
                     cur.close();
                     db.close();
                   } 
                 }
我在这条线上出错了

 :forceModNameList.add(menuitemForcemodMapsLevel1.getString(1).substring(0));
谢谢,
Neha

请用这个,我想它会解决你的问题

    Cursor c;
    if(c.moveToFirst())
    {
      do
       {
        // perform operation in this blocks

       }while(c.moveToNext());
     }

您已在以下位置检索到第一个元素:

rblevel1[i].SetTextMenuItemForceModMapsLevel 1.getString1.substring0

因此光标向前移动。然后你又在问同样的问题。光标不能向后移动,默认情况下只能向前移动。所以你得到了这个错误

为什么不将值保存在字符串中,这样就可以在无需再次检索的情况下再次使用它呢


我相信这将简化您的代码并解决问题。试试。

如果您有任何疑问,请告诉我您应该先查看moveToFirst的电话。如果返回false,则光标为空,您不应进入do while循环。是的,Samuel,对此表示抱歉。这一次是离开办公室,所以它的答复非常紧急so@RameshSolanki&Samuel,我相信这里的问题不是游标为空,因为他只检索了一次第一个元素,而再次尝试检索同一个元素时出错。这就是问题所在。