1

ActionBarSherlock을 기반으로하는 액티비티와 프래그먼트를 사용하고 있습니다. SQLite 데이터베이스에서 행을 읽으려는 경우 ContentProvider 대신 Loader을 사용하려고하는데 나를 위해 LoaderEx을 얻으려고합니다.SQLiteCursorLoader에서 로더로 변환 할 수 없습니다. <Cursor>

나는 고집이 문제와 붙어있어 내 조각의 onCreateLoader 콜백, ADT가 지속적으로 나에게 오류를주고있다 :

"Cannot convert from SQLiteCursorLoader to Loader<Cursor>" 

것은 내가 안드로이드 V4 지원 라이브러리를 사용하고 있습니다. DEX 오류 때문에 ActionBarSherlock과 LoaderEx에서 android-support-v4.jar을 제거하고이를 기본 프로젝트에 추가했습니다. 그런 다음 ABS와 LoaderEx를 모두 사용하도록했습니다.

ABS 및 LoaderEx는 모두 라이브러리 프로젝트로 추가됩니다.

내가 v4 가져 오기만을 사용하고 있는지 확인했습니다. 또한 LoaderExDemo는 에뮬레이터에서 컴파일되고 작동합니다.

이 내 조각의 수입은 다음과 같습니다

import com.actionbarsherlock.app.SherlockListFragment; 

import android.database.Cursor; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.widget.ListView; 
import android.support.v4.widget.SimpleCursorAdapter; 
import android.support.v4.app.LoaderManager; 
import android.support.v4.app.LoaderManager.LoaderCallbacks; 
import android.support.v4.content.CursorLoader; 
import android.support.v4.content.Loader; 

import com.commonsware.cwac.loaderex.SQLiteCursorLoader; 

여기 내 조각 선언입니다 :

public class MeetingListFragment 
     extends SherlockListFragment 
     implements LoaderManager.LoaderCallbacks<Cursor> { 
    private JournalDatabaseHelper db = null; 
    private SimpleCursorAdapter adapter = null; 
    private SQLiteCursorLoader loader = null; 

그리고 여기 getLoader 콜백 메소드이다 : 나는 앞뒤로 갔어요

public Loader<Cursor> onCreateLoader(int loaderId, Bundle args) { 
    loader = new SQLiteCursorLoader(getSherlockActivity().getApplicationContext(), 
     db, 
     "SELECT _ID, meeting_timestamp, meeting_desc FROM meeting " + 
     "ORDER BY meeting_timestamp DESC", 
     null); 
    return loader; // <<< this is the line of the ADT/Eclipse error 
} 

이걸로 몇 시간 동안. SO에 대한 일부 답변은 해당 지역에 있지만 실제 해결책은 아닙니다. 무슨 일 이니?

답변

5

당신은이 : 잘못된 SQLiteCursorLoader입니다

import com.commonsware.cwac.loaderex.SQLiteCursorLoader; 

을, 즉 Loader 프레임 워크의 기본 API 레벨 11 + 버전의 하나로서. the LoaderEx documentation에 명시된 바와 같이 Android 지원 패키지의 Loader 백 포트를 사용하는 경우 com.commonsware.cwac.loaderex.acl.SQLiteCursorLoader을 사용해야합니다.

+0

정말 고마워요! 물론 그 것이었다. 나는 그 문서를 읽었지 만, 나는 충분히주의를 기울이지 않았다. 지원 라이브러리가 처음으로 복잡하지 않은 것은 아닙니다. –

+2

@ JereKäpyaho : 예, 도서관을 쓰는 우리 모두는 진저 브레드가 멀어지기를 참을성있게 기다리고 있습니다. :-) – CommonsWare