2012-01-03 6 views
3

ちょっと私のコードの範囲外のインデックスを取得しています。 Activityからカーソルインデックス外のエラーAndroid?

  Cursor cursor = mDbHelper.fetchA(b); 
      @SuppressWarnings("static-access") 
      int a = (int) cursor.getDouble(cursor.getColumnIndex(mDbHelper.KEY_I)); 
      cursor.close(); 

マイDBアダプタ:

public Cursor fetchA(String b){ 
    return mDb.query(DATABASE_TABLE, new String[] {KEY_I}, "b=\""+B+"\"", null, null, null, null); 
} 

エラー:

私はこの問題を解決するにはどうすればよい
E/AndroidRuntime(5766): FATAL EXCEPTION: main 

    E/AndroidRuntime(5766): android.database.CursorIndexOutOfBoundsException: Index 

    -1 requested, with a size of 1 

答えて

5

カーソルは、最初の行のより前の位置にあるを指しています。そのため、データを取得する前にカーソルを最初の行に移動する必要があります。 Cursor#moveToFirst()または#moveToNext()は仕事をしなければなりません。ここで

Cursor cursor = mDbHelper.fetchA(b); 
cursor.moveToNext(); 
@SuppressWarnings("static-access") 
int a = (int) cursor.getDouble(cursor.getColumnIndex(mDbHelper.KEY_I)); 
cursor.close(); 
0
Cursor cursor = mDbHelper.fetchA(b); 
startManagingCursor(cursor); 
cursor.moveToNext(); 
....... 

あなたの検索コード。