2017-10-05 64 views
1

我知道有很多关于这个异常的线程,但是,我希望人们查看我的代码并协助我在我的具体位置出错了。android.database.CursorIndexOutOfBoundsException:索引-1请求,大小为22

这里是我的代码,试图将我的用户输入存储到一个sqlite数据库,然后传递代码并将其显示在新的活动中。任何人都可以告诉我哪里出错了,为什么这个错误会持续发生? (在标题错误)

Cursor res = myDb.getAllData(); 


      StringBuffer buffer = new StringBuffer(); 

      String getid = res.getString(0); 
      String getlt = res.getString(1); 
      String getpt = res.getString(2); 
      String getqty = res.getString(3); 
      String getdur = res.getString(4); 
      String getst = res.getString(5); 
      String getet = res.getString(6); 


      if (res != null && res.moveToFirst()) { 
       do { 
        buffer.append(getid); 
        buffer.append(getlt); 
        buffer.append(getpt); 
        buffer.append(getqty); 
        buffer.append(getdur); 
        buffer.append(getst); 
        buffer.append(getet); 
       } while (res.moveToNext()); 
      } 


      Intent TransferData = new Intent(getBaseContext(), screen4.class); 
      TransferData.putExtra("ID", getid); 
      TransferData.putExtra("LineType", getlt); 
      TransferData.putExtra("PackageType", getpt); 
      TransferData.putExtra("Quantity", getqty); 
      TransferData.putExtra("Duration", getdur); 
      TransferData.putExtra("Starttime",getst); 
      TransferData.putExtra("endtime", getet); 

      startActivity(TransferData); 
     } 
    }); 
} 

}

未遂2内DO BLOCK:

Cursor res = myDb.getAllData(); 


      StringBuffer buffer = new StringBuffer(); 


      if (res != null && res.moveToNext()) { 
       do { 

        String getid = res.getString(0); 
        String getlt = res.getString(1); 
        String getpt = res.getString(2); 
        String getqty = res.getString(3); 
        String getdur = res.getString(4); 
        String getst = res.getString(5); 
        String getet = res.getString(6); 

        buffer.append(getid); 
        buffer.append(getlt); 
        buffer.append(getpt); 
        buffer.append(getqty); 
        buffer.append(getdur); 
        buffer.append(getst); 
        buffer.append(getet); 

        Intent TransferData = new Intent(getBaseContext(), screen4.class); 
        TransferData.putExtra("ID", getid); 
        TransferData.putExtra("LineType", getlt); 
        TransferData.putExtra("PackageType", getpt); 
        TransferData.putExtra("Quantity", getqty); 
        TransferData.putExtra("Duration", getdur); 
        TransferData.putExtra("Starttime",getst); 
        TransferData.putExtra("endtime", getet); 

        startActivity(TransferData); 

       } while (res.moveToNext()); 

回答

1

你所要做的是一个目前还不清楚。

在你的代码有:

String getid = res.getString(0); 
String getlt = res.getString(1); 
//bla bla bla 

我相信他们应该是做块内。

您尝试访问列数据时未将Cursor移动到第一个位置。

在从Cursor读取任何值之前,必须先拨打Cursor#moveToFirst();

+0

我试着你说的,我得到一个错误,因为字符串是在DO块内声明的,现在他们不能被意图访问。所以我试图在DO块内部移动意图,但它仍然崩溃。我在最初的帖子中对代码进行了更新 – Fionnuala

+0

是的,你的代码是一团糟。首先学习一些Java。 –

+0

即时消息只是一个初学者。这是非常有帮助的没有。 – Fionnuala

相关问题