IllegalStateException: получить слот поля из строки 0 col -1 не удалось - PullRequest
1 голос
/ 27 января 2011
int columnIndexFromAddrCountry;

public FavoritesActAdapter(Context context, int layout, 
        Cursor c, String[] from, int[] to) {
    super(context, layout, c, from, to);
    gnCursor = c;

    columnIndexFromAddrCountry = 
        c.getColumnIndex(DBAdapter.KEY_FROM_ADDR_COUNTRY);

}

@Override
public void bindView(View view, Context context, Cursor cursor) {
    gnCursor = getCursor();

    final String fromAddrCountry = 
        gnCursor.getString(columnIndexFromAddrCountry);

        ...

        super.bindView(view, context, cursor);
}

Почему я получаю IllegalStateException?

IllegalStateException: получить слот поля из строки 0 col -1 не удалось

Что означает это исключение?Исключение выдается для этой строки

final String fromAddrCountry = gnCursor.getString(columnIndexFromAddrCountry);

, потому что columnIndexFromAddrCountry равно -1.Столбец существует, и можно разрешить еще десять столбцов.Что может вызвать эту проблему?

Заранее спасибо!

1 Ответ

2 голосов
/ 27 января 2011

Что для DBAdapter.KEY_FROM_ADDR_COUNTRY установлено?

Из Курсор док

публичная аннотация int getColumnIndex (String columnName)

Поскольку: API Level 1 Возвращает нулевой индекс для данного столбца имя или -1, если столбец не существовать. Если вы ожидаете, что столбец существует использование вместо этого getColumnIndexOrThrow (String), что сделает ошибку более понятной

Таким образом, вы можете использовать getColumnIndexOrThrow(String), чтобы получить лучшее сообщение об ошибке, которое поможет вам при отладке.

...