2011-11-28 3 views
0

android 호환 라이브러리에서 FragmentActivity의 하위 클래스가 아닌 Activity의 하위 클래스에서 CursorLoader를 사용할 수 있습니까? 가능한 경우 getLoaderManager() 이후 Cursorloader를 얻는 방법은 무엇입니까? init (...)는 호환성 레이어가있는 작업 하위 클래스에서 사용할 수 없습니다. 공식 documentation에서Android 호환성이있는 Fragment가 아닌 Activity에서 CursorLoader를 사용할 수 있습니까?

답변

5

Honeycomb 이상을 사용하는 경우가 아니면 예외가 아닙니다. FragmentActivity에는 로더 관리에 필요한 코드가 포함되어 있으며 사전 허니 콤 Activity은 포함되어 있지 않습니다.

FragmentActivity을 연장 하시겠습니까?

+0

데이터베이스로드가 증가함에 따라 리팩토링해야하는 대규모 Android 2.1 애플리케이션입니다. 나는 가능한 한 조금 변화를 계획하고 있었다. 분명한 답변을 주셔서 감사합니다. –

0

:

컨텐트 리졸버 ContentResolver를 조회하고 커서를 반환하는 로더. 이 클래스는 커서를 쿼리하기위한 표준 방식으로 Loader 프로토콜을 구현하고, 클라이언트의 UI를 차단하지 않도록 AsyncTaskLoader를 빌드하여 배경 스레드에서 커서 쿼리를 수행합니다. 활동 클래스는 LoaderCallbacks이 메소드를 오버라이드 (override) 구현)합니다 (onCreateLoader에

public Loader<Cursor> onCreateLoader(int id, Bundle args) { 
     String select = "((" + Contacts.DISPLAY_NAME + " NOTNULL) AND (" 
       + Contacts.HAS_PHONE_NUMBER + "=1) AND (" 
       + Contacts.DISPLAY_NAME + " != ''))"; 

     return new CursorLoader(getActivity(), Contacts.CONTENT_URI, 
       CONTACTS_SUMMARY_PROJECTION, select, null, 
       Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC"); 
    } 

모르겠다을 CursorLoader을 반환해야하므로

CursorLoadeer 클래스는, 컨텐트 리졸버가 커서를 반환하는 쿼리가 getCursorLoader() .init (...) API에 대해 getLoaderManager()을 참조하고 있다면 Activity 클래스에서 사용할 수 있습니다.

+0

죄송합니다. 내 실수. 나는 getLoaderManager()를 의미했습니다. 호환성 라이브러리를 사용하는 동안 Activity 하위 클래스에서는 사용할 수 없습니다. 그런 다음 어떻게 만들 수 있습니까? –

+0

@ Ya.Perelman 활동에서 getLoaderManager를 사용하는 방법을 알고 있습니까? – Hunt

관련 문제