Stack Exchange
Удалить  Id , ContentResolver ???
пытаюсь удалить из database id ...Как написать Правильно Код ??
public boolean onContextItemSelected(MenuItem item) {
        // return super.onContextItemSelected(item);
        Log.d(TAG, "long item select");
        Log.d(TAG, "1");

        switch (item.getItemId()) {
        case R.id.Favorite2:

            AdapterContextMenuInfo info = (AdapterContextMenuInfo) item
            .getMenuInfo();
           long id = info.id;
        //  dbHandler.delete(id);
          Cursor cursor3 = getActivity().getContentResolver().query(
                    Contract.Favorite.CONTENT_URI, null,
                    Contract.Favorite._ID + "=" + id, null, null);

            if (cursor3 != null) {
                cursor3.moveToNext();
            //ContentResolver cr = getActivity().getContentResolver();
            ((ContentResolver) cursor3).delete(Contract.Favorite.CONTENT_URI,Contract.Favorite._ID + "=" + id, null);

            }
    return true;
        }

        return super.onContextItemSelected(item);
    }


ERROR : java.lang.ClassCastException:
android.content.ContentResolver$CursorWrapperInner
cannot be cast to
android.content.ContentResolver

@David Kern, Если вам дан исчерпывающий ответ, отметьте его как верный (нажмите на галку рядом с выбранным ответом).


java.lang.ClassCastException:
android.content.ContentResolver$CursorWrapperInner
cannot be cast to
android.content.ContentResolver

Дословный перевод:  


java.lang.ClassCastException:
android.content.ContentResolver$CursorWrapperInner
не может быть приведен к 
android.content.ContentResolver  


На какой строчке ошибка? на этой?
((ContentResolver)cursor3).delete(Contract.Favorite.CONTENT_URI,Contract.Favorite._ID + "=" + id, null);

А с чего вы вообще взяли, что Cursor cursor3 может быть приведен к типу ContentResolver? Где вы видели, что один наследуется от другого?
Спасибо за коммент :)
Не посоветуете, как можно удалить id из database?
Для удаления я использую этот код, но получаю ERROR:

android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0

ContentResolver cr = getActivity().getContentResolver();

cr.delete(Contract.Favorite.CONTENT_URI,Contract.Favorite._ID + "=" + id, null);

Я использовал такой код чтобы удалить весь database
ContentResolver cr = getContentResolver();
cr.delete(Contract.Favorite.CONTENT_URI, null, null);
Хотел бы применить к удалению одного id.

@David Kern, приведенный вами код
ContentResolver cr = getActivity().getContentResolver(); cr.delete(Contract.Favorite.CONTENT_URI,Contract.Favorite._ID + "=" + id, null);

не может вызвать ошибку

ERROR : android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0

Она возникает при попытке вычитать из курсора нулевую строку, если курсор не содержит ни одной строки. Всегда внимательно смотрите номера строк.

спасибо за коммент,
этот код удаляет id,
но приложение перестаёт работать
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item
.getMenuInfo();
long id = info.id;
ContentResolver cr = getActivity().getContentResolver();
cr.delete(Contract.Favorite.CONTENT_URI,Contract.Favorite._ID + "=" + id, null);

@David Kern, вы так и не поняли. Стактрейс всегда содержит НОМЕРА СТРОК, в которых возникли ошибки. Ошибка ваша возникает уже после выполнения этих строк. Вы там дальше используете как-то этот ContentResolver cr. Как вы его используете - я не знаю.

Ок Большое Спасибо :)))))
