일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- viewholder
- recyclerview
- 코틀린
- adapter
- Android
- 안드로이드개발레벨업교과서
- 안드로이드
- 안드로이드스튜디오
- high order function
- 재사용
- fragment
- 고차함수
- 코딜리티
- Error:Execution failed for task ':app:mergeDebugResources'
- binding adapter
- 구분선
- 뷰변경 감지
- searchview
- ActivityTestRule
- 리사이클러뷰
- IntentTestRule
- 생명주기
- espresso
- LayoutManger
- 안드로이드13
- 테마 아이콘
- 스와이프
- ui test
- Fragment에서 Activity의 함수 사용하기
- Fragment 수동 추가
Archives
- Today
- Total
룬아님의 취중코딩
PreferenceFragment에서 PreferenceFragmentCompat으로 변경하기 본문
AndroidX로 migrate 이후 PreferenceFragment 에서 PreferenceFragmentCompat으로 변경이 됬습니다.
변경 이후 처리한 이슈에 대해 정리해 보겠습니다.
1. onCreatePreferences
PreferenceFragmentCompat으로 변경 이후 반드시 onCreatePreferences를 override하도록 변경 되었습니다.
기존의 onCreate에서 사용하던 로직을 onCreatePreferences에서 구현해주시면 됩니다.
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences_message);
messageEnablePref = (SwitchPreference)findPreference("pref_key_message_send_and_receive");
}
==> 기존 코드
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
setPreferencesFromResource(R.xml.preferences_message, rootKey);
messageEnablePref = findPreference("pref_key_message_send_and_receive");
}
==> 고친 코드
addPreferencesFromResource이 setPreferencesFromResource으로 바뀐 것을 제외하고 큰 변화가 없습니다.
2.getEditor()
Preference객체에서 editor를 가져오는 방법이 바뀌었습니다.
기존의 getEditor()로 가져오던 것을 getSharedPreferences().edit()으로 가져올 수 있습니다.
messageEnablePref.getEditor().putBoolean("key", isMessageOn).apply();
messageEnablePref.getSharedPreferences().edit().putBoolean("key", isMessageOn).apply();
3. getSupportFragmentManager
기존에는 getFragmentManager을 사용하여 fragment를 add 해주었습니다. 하지만 PreferenceFragmentCompat을 상속받은 fragment를 add해주기 위해서는 getSupportFragmentManager를 사용해야 합니다.
getFragmentManager().beginTransaction()
.replace(R.id.content, new MessageSettingsFragment())
.commit();
==> 기존코드
getSupportFragmentManager().beginTransaction()
.replace(R.id.content, new MessageSettingsFragment())
.commit();
==> 고친 코드
4. xml의 변화
AndroidX로 migrate 이후 칸에 들여쓰기가 적용되어 있고 이전에는 칸마다 적용되어 있던 line이 사라져있었습니다.
Theme 등으로 적용을 해보려 해도 잘 적용되지 않아 xml에 직접 추가하는 방법을 찾아 이전 UI와 맞춰주는 작업을 했습니다.
<SwitchPreference android:key="key" android:title="@string/id" android:defaultValue="true" android:dependency="key" app:iconSpaceReserved="false" app:allowDividerAbove = "true"/>
app:iconSpaceReserved="false"
==> 들여쓰기 제거
app:allowDividerAbove = "true"
==> 위쪽에 줄 추가
app:allowDividerBelow = "true"
==> 아래쪽에 줄 추가
반응형
'개발 > 안드로이드 개발' 카테고리의 다른 글
(파일 다루기 2) Android Storage Access Framework를 이용한 파일 저장과 불러오기 (0) | 2019.10.11 |
---|---|
(파일 다루기 1) Gson을 이용하여 커스텀 객체를 Json 객체로 변환하기 (0) | 2019.10.11 |
Glide 커스텀 cache key로 cache 하기 (0) | 2019.09.30 |
Java에서 Kotlin으로 convert하기 (0) | 2019.09.30 |
안드로이드 스튜디오 빌드 속도를 빠르게 하는 TIP (0) | 2019.09.22 |
Comments