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);
 }