SettingActivity PreferenceActivity SharedPreferences.OnSharedPreferenceChangeListener
MainActivity
SettingActivity
public class SettingActivity extends PreferenceActivity implements SharedPreferences.OnSharedPreferenceChangeListener {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.setting);/** setting ListPreference 항목 동적 생성 */
ListPreference listPreference = (ListPreference) findPreference("fpdb");
if (listPreference != null) {
CharSequence entries[] = new String[Splash.static_FpdbList.size()];
CharSequence entryValues[] = new String[Splash.static_FpdbList.size()];
int i = 0;
for (FpdbListVo list : Splash.static_FpdbList) {
entries[i] = fpdbListTextSet(list);
entryValues[i] = Integer.toString(i);
i++;
}
listPreference.setEntries(entries);
listPreference.setEntryValues(entryValues);/**EditText summary init*/
SharedPreferences sPref = getPreferenceScreen().getSharedPreferences();
EditTextPreference particleArea = (EditTextPreference) findPreference("particleArea");particleArea.setSummary(sPref.getString("particleArea", ""));
}
}@Override
protected void onResume() {
super.onResume();
PreferenceManager.getDefaultSharedPreferences(getApplication()).registerOnSharedPreferenceChangeListener(this);
}
@Override
protected void onPause() {
super.onPause();
PreferenceManager.getDefaultSharedPreferences(getApplication()).unregisterOnSharedPreferenceChangeListener(this);
}@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
Preference connectionPref = findPreference(key);
if (connectionPref instanceof EditTextPreference) {
EditTextPreference editPref = (EditTextPreference) connectionPref;
editPref.setSummary(editPref.getText());
}
}
Setting.xml
(\app\src\main\res\xml\setting.xml)
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"><ListPreference
android:defaultValue="0"
android:dependency="selectFpdbUseCheck"
android:key="fpdb"
android:title="FPDB 선택" /><EditTextPreference
android:defaultValue="200"
android:inputType="numberSigned|numberDecimal"
android:key="particleArea"
android:singleLine="true"
android:title="particleArea" /></PreferenceScreen>
위와같이(PreferenceActicity + Preference.xml) 만들다 보니, PrefernceActivity.findPreference()가 Lv11(허니콤) 부터 deprecated 되어있는것을 알게되었다.
대신에 PreferenceFregment를 사용하면된다.
이때, 그냥 PreferenceActicity를 PreferenceFregment로 변경하게 되면 안된다.
Fregment는 Activity 위에서만 동작하기 때문에 Activity에서 호출해야한다.
구성하는 방법을 세가지로 나눠보았다.
- PrefereceActivity +Header + PreferneceFragment +Preference.xml (android 에서 이렇게 만들라고 함)
- PrefereceActivity+ PreferneceFragment +Preference.xml
- PreferneceActivity +Preference.xm ( 처음에 하려고 했던것 deprecated)
첫번째는 안드로이드 세팅 가이드에서 한국어로 자세히 설명해주고 있다 (PrefereceActivity +Header + PreferneceFragment +Preference.xml)
https://developer.android.com/guide/topics/ui/settings.html
https://developer.android.com/reference/android/preference/PreferenceFragment.html
'SW Programming > Android' 카테고리의 다른 글
[Android] 중첩된 리스트 사용시 스크롤 민감도 조절해보기(가로, 세로 스크롤) (0) | 2022.05.20 |
---|---|
Android 단말에서 온갖 이벤트를 모니터링, 제어하고 싶다. adb shell getevent (0) | 2021.03.23 |
IOS 안드로이드 스튜디오 업데이트 오류 해결 (0) | 2017.06.15 |
리사이클러 뷰 RecyclerView 정리 (0) | 2017.04.26 |
(안드로이드) 키보드 사라지게 하기 (0) | 2017.03.07 |
댓글