728x90
안녕하세요 오늘은 PreferenceScreen을 사용해서 사용자 설정창을 만들고 해당 데이터를 SharedPreferences에 저장을 시키겠습니다.
먼저 build.gradle(:app)에 의존성을 추가해 줍니다
implementation 'androidx.preference:preference:1.1.0'
그리고 나서 res파일에 xml 파일이 없다면 xml 파일을 생성을 해주고 리소스 파일을 생성합니다
xml 코드입니다.
setting_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory android:title="기본 설정">
<CheckBoxPreference
android:key="notifications"
android:title="알림"
android:summary="알림 허용"
android:defaultValue="true" />
<SwitchPreference
android:key="location"
android:title="위치 서비스"
android:summary="위치 정보 수집"
android:defaultValue="false" />
</PreferenceCategory>
<PreferenceCategory android:title="계정 정보">
<EditTextPreference
android:key="username"
android:title="사용자 이름"
android:summary="사용자 이름을 입력하세요"
android:dialogTitle="사용자 이름"
android:defaultValue="user" />
</PreferenceCategory>
</PreferenceScreen>
다음은 자바 클래스를 생성해줍니다.
PreferenceFragment.class
public class PreferenceFragment extends PreferenceFragmentCompat {
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
setPreferencesFromResource(R.xml.setting_layout,rootKey);
}
}
다음은 메인 액티비티 xml파일입니다
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/setting_layout"/>
</androidx.constraintlayout.widget.ConstraintLayout>
다음은 메인 클래스입니다
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getSupportFragmentManager().beginTransaction().replace(R.id.setting_layout,new PreferenceFragment()).commit();
SharedPreferences preferences;
preferences = PreferenceManager.getDefaultSharedPreferences(this);
preferences.registerOnSharedPreferenceChangeListener(new SharedPreferences.OnSharedPreferenceChangeListener() {
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String s) {
Log.d("TAG", "onSharedPreferenceChanged: " + s);
}
});
}
}
실행을 하면 다음 화면과 같습니다
화면을 띄우게 되면 기본 설정되있는 값으로 SharedPreferences에 값이 추가가 되게 됩니다.
다음으로 값을 수정해 보겠습니다. 따로 해야될 일은 없고 클릭으로 체크박스를 체크를 하던 이름을 입력하고 확인만 하면 바로 업데이트가 됩니다.
'안드로이드 자바' 카테고리의 다른 글
[Android][JAVA]간단한 텍스트뷰 자동완성 (0) | 2023.05.02 |
---|---|
[Android][Java] Customize Line Chart (0) | 2023.04.29 |
[Android][Java] FadingTextView 사용해서 일정시간마다 글자 바꿔주기 (0) | 2023.04.27 |
[Android][Java] 스낵바(Snackbar) 커스텀 하기 (0) | 2023.04.26 |
[Android][Java] RecyclerView에 Loading Progress Bar 아이템 추가하기 (0) | 2023.04.23 |