Preference를 이용해 복습 간격을 설정하는 화면을 만들었다.
루트 태그로 PreferenceScreen을 설정한 root_preferences.xml을 만들었다.
ListPreference를 이용해 날짜를 선택하도록 만들었다.

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<PreferenceCategory app:title="@string/messages_header">
<ListPreference
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:entries="@array/date_entries"
app:entryValues="@array/date_values"
android:title="@string/signature_title"
android:summary="n일"
android:key="date_interval"/>
</PreferenceCategory>
</PreferenceScreen>
List에 들어가는 date_values와 date_entries의 내용은 다음과 같다.
<string-array name="date_values">
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item>5</item>
</string-array>
<string-array name="date_entries">
<item>1일</item>
<item>2일</item>
<item>3일</item>
<item>4일</item>
<item>5일</item>
</string-array>
PreferenceFragmentCompat 클래스를 상속받는 SettingsFragment 클래스를 만들어 XML 파일과 inflate하도록 만들었다.
ListPreference을 초기화하여 사용하였고,
SharedPreferences에 저장된 ListPreference의 값으로 ListPreference의 summary 값으로 설정하도록 하였다.
public class SettingsFragment extends PreferenceFragmentCompat {
ListPreference listPreference;
SharedPreferences sharedPreferences;
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
setPreferencesFromResource(R.xml.root_preferences, rootKey);
if(rootKey == null)
listPreference = findPreference("date_interval");
sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getContext());
listPreference.setSummary(getDateInterval()+"일");
listPreference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
listPreference.setSummary(getDateInterval()+"일");
return true;
}
});
}
private String getDateInterval(){
String dateInterval = sharedPreferences.getString("date_interval", "0");
return dateInterval;
}
}
Preference를 사용하는것은 처음이기에 이 코드로 제대로 작동할지는 알 수 없다.
MainActivity를 설정해 화면에 띄워 본 뒤 잘못된부분들은 고쳐갈 생각이다.