Preference 관련 질문입니다.
ListPreference에서 메뉴 선택 후 해당 이벤트를 처리하고자 아래 코드와 같이 구현해 보았습니다.
웹에서 돌아다니고 있는 소스를 일부 수정하여 작업하였는데, ListPrefernce에서
해당 값을 선택했을 때 이벤트 등록후 처리를 아래와 같이 하면 CheckBoxPreference체크박스 버튼만 선택했을 때도
ListPreference가 동작하네요. ;;
예를 들어 리스트 프리퍼런스에서 "선택2"를 하고 체크박스 버튼을 선택하면 "선택2"라는 토스트와 "선택함"이라는 토스트가
연이어 동작하는 문제가 발생합니다.
도움 부탁드립니다.
public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen,
Preference preference) {
defaultSharedPref = PreferenceManager.getDefaultSharedPreferences(this);
if(preference.equals((CheckBoxPreference)findPreference("tobtn1"))) {
boolean istobtn1 = defaultSharedPref.getBoolean("tobtn1", false);
if(istobtn1 == true)
Toast.makeText(getBaseContext()," 선택함", Toast.LENGTH_SHORT).show();
else
Toast.makeText(getBaseContext()," 선택해제",Toast.LENGTH_SHORT).show();
}
else if(preference.equals((ListPreference)findPreference("listPref"))) {
defaultSharedPref.registerOnSharedPreferenceChangeListener(new OnSharedPreferenceChangeListener(){
public void onSharedPreferenceChanged(SharedPreferences defaultSharedPref, String strVal){
strVal = defaultSharedPref.getString("listPref", "0");
if(strVal.compareTo(StrVal1)==0)
Toast.makeText(getBaseContext()," 선택1", Toast.LENGTH_SHORT).show();
else if(strVal.compareTo(StrVal2)==0)
Toast.makeText(getBaseContext()," 선택2", Toast.LENGTH_SHORT).show();
else if(strVal.compareTo(StrVal3)==0)
Toast.makeText(getBaseContext()," 선택3", Toast.LENGTH_SHORT).show();
}
});
}
return super.onPreferenceTreeClick(preferenceScreen, preference);
}