2017-10-05 62 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

相關問題