행복한 하루
안드로이드 PreferenceScreen 사용 방법(설정 창) 본문
안녕하세요.
안드로이드 앱에서 설정하는 화면을 만들려고 하다가 PreferenceScreen을 알게 되었습니다. 그런데 이전 버전 PreferenceScreen deprecated 되었다고 나왔습니다. 그래서 최신 버전에 맞게 변경된 내용으로 작업한 것을 공유해보려고 합니다. 설정 폼하나 띄우는데 이것저것 할 것이 좀 있습니다.
1. res/xml 에 resource xml을 생성
- xml 폴더가 없다면 res 폴더에서 new -> sample Data Directory 해서 생성합니다.
- Root element 가 PreferenceScreen 인지를 확인하고 파일명을 넣고 OK 합니다.
2. 만들어진 xml 파일에 원하는 설정을 UI 코드를 입력
- SwitchPreferenceCompat, List 등 넣어서 만들 수 있습니다.
- 예제는 스위치 버튼 하나 넣었습니다
<?xml version="1.0" encoding="utf-8"?>
<androidx.preference.PreferenceScreen
xmlns:app="http://schemas.android.com/apk/res-auto">
<SwitchPreferenceCompat
app:key="notifications"
app:title="Enable alarm message notifications"/>
<Preference
app:key="feedback"
app:title="Send feedback"
app:summary="Report technical issues or suggest new features"/>
</androidx.preference.PreferenceScreen>
3. build.gradle(:app) 라이브러리 추가
- implementation 마지막에 추가 하고 sync 해줍니다.
implementation 'androidx.preference:preference:1.1.0'
4. fragment로 추가하기 위해서 클래스 생성
- 자신의 package 폴더 안(MainActivity 있는 폴더)에서 new -> Java class 만듭니다.
( 파일명: PreferenceFragment - 파일명 변경가능)
- 소스를 입력합니다. R.xml.settingpage 에서 settingpage는 이전에 만들었던 PreferenceScreen xml 파일명을 넣으면 됩니다.
public class PreferenceFragment extends PreferenceFragmentCompat {
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
setPreferencesFromResource(R.xml.settingpage, rootKey);
}
}
5. FrameLayout 생성
- 설정화면(PreferenceScreen)을 보여줄 화면(Activity)에 FrameLayout을 추가해줍니다. (MainActivity.xml 에 추가할 수도 있고, 새로운 Activity 만들어서 넣어도 됩니다. 단지, id를 잊지 않고 만들어 줍니다.)
...
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/frameLayout">
</FrameLayout>
...
6. onCreate에 화면추가
- 마지막으로 생성된 fragment를 사용할 Activity의 frameLayout에 넣어줍니다. 그리기 위해서 fragmentManager()를 이용합니다. replace에 인자에 앞에서 만든 frameLayout 공간 id를 입력합니다. 그리고 PreferenceScreen 클래스 new 해서 생성해줍니다.
- 값이 바뀐 것을 가져올 수 있는 방법으로 onCreate에 같이 만들어줍니다.
PreferenceManager를 사용합니다. 그리고 SharedPreferences sp의 sp 변수에 키값을 넣고 값을 읽어옵니다. sp.getBoolean(key, defaultValue)
7. 컴파일 실행
- 위와 같이 작업이 끝났다면 아래와 같이 나타나고 종료하고도 저장된 값이 나타납니다.
감사합니다.
<참고사이트>
https://m.blog.naver.com/edisondl/221468737546
'Android > 안드로이드 프로그래밍' 카테고리의 다른 글
아두이노 나노(Arduino Nano 33 IoT) BLE 값을 송수신 가능한 BLE 안드로이드 앱 만들기 (1) | 2021.09.26 |
---|---|
com.google.firebase.FirebaseException: An internal error has occurred. [ API key not valid. Please pass a valid API key. ] 해결방법(Solved) (0) | 2020.10.11 |
안드로이드 JSON response 가 배열로 바로 넘어오는 경우 (0) | 2020.09.27 |
[앱 업데이트] DailyEng v1.3.9 – 날짜이동 기능 추가 (20.09.20) (0) | 2020.09.20 |
플래그먼트 갱신,새로고침 하는 방법 (fragment refresh) (0) | 2020.09.02 |