2017년 1월 3일 화요일

PreferenceFragment, PreferenceFragmentCompat

꽤나 오래전에 만들었던 App에서
PreferenceFragment를 사용하여 앱 설정을 만들었었으나
나중에 android support library를 사용하여 android.support.v4.app.Fragment를 상속하여 view들을 만들어 관리 했었는데 android.app.Fragment를 상속하여 만든 PreferenceFragment를 사용하는데 문제가 있어 대충 귀찮아서 그냥 상위 버전의 support library로 업데이트 하여 사용했던 적이 있었음. (좀 후회됨....)

이 상황은 android support library v7의 PreferenceFragmentCompat를 사용하면 된다.

PreferenceFragmentCompat


Preference API Guide


위 링크에서는 PreferenceFragment를 사용하고 있으나 이를 android.support.v7.preference.PreferenceFragmentCompat 변경해서 사용해야 함.

또한 다른 점으로
PreferenceFragment은 OnCreate()가 처음 호출되어 preference page를 구성하지만  PreferenceFragmentCompat은 onCreatePreferences()가 처음 호출 되므로 onCreatePreferences()에서 page를 구성해야 한다.

Gradle Build Script Dependency

그리고 해당 preference andorid support libary를 사용하고자 할 경우
아래 링크에서 Gradle 빌드 스크립트 종속성 식별자를 정확하게 App의 project structure > dependency 에 입력하여 추가하여 사용해야 한다. 그냥 대충 검색하니 안나오더라..


v7 Preference 지원 라이브러리

preference 패키지는 사용자가 UI 설정을 수정하도록 CheckBoxPreference 및 ListPreference와 같은 기본 설정 객체 추가를 지원하는 API를 제공합니다.
v7 Preference 라이브러리는 Preference.OnPreferenceChangeListener 및 Preference.OnPreferenceClickListener와 같은 인터페이스와 CheckBoxPreference 및 ListPreference와 같은 클래스에 대한 지원을 추가합니다.
이 라이브러리에 대한 Gradle 빌드 스크립트 종속성 식별자는 다음과 같습니다.
com.android.support:preference-v7:24.2.0

No resource found that matches the given name (at 'id' with value '@android:id/list_container')

혹시나 빌드 중 위와 같은 에러가 발생한다면
임시 방편으로 아래 링크 마지막에서 언급된 것 처럼 app의 compileSdkVersion을 24 (7.0)로 설정하면 빌드 된다.





댓글 없음:

댓글 쓰기