3

CheckBoxPreference 'A'를 선택하면 다른 기본 설정 ('B')이 A 아래에 표시됩니다. 'A ', 환경 설정'B '는 숨 깁니다 ...Android : 다른 CheckBoxPreference를 확인/선택 취소 할 때 환경 설정을 표시/숨기기

따라서 일반적으로 의존성과 마찬가지로 작동하지만 환경 설정 B를 활성화/비활성화 할 수는 없지만 숨길 수 있습니다. 이 내가 생각 해낸 것입니다

: PREFA 및 prefB이 PreferenceFragment 클래스 필드로 이전에 정의 된

prefA = (CheckBoxPreference)findPreference("preference_A"); 
prefA.setChecked(false); 

prefB = findPreference("preference_B"); 
category.removePreference(prefB); 

prefA.setOnPreferenceChangeListener(new OnPreferenceChangeListener() { 

    @Override 
    public boolean onPreferenceChange(Preference preference, Object newValue) { 

     boolean switchedOn = (Boolean)newValue; 
     if (switchedOn) 
     { 
      Log.d("pref_test", "prefA checked"); 

      category.addPreference(prefB); 
     } 
     else 
     { 
      Log.d("pref_test", "prefA UNchecked"); 

      prefB = findPreference("preference_B"); 
      category.removePreference(prefB); 
     } 

     return switchedOn; 
    } 
}); 

.

prefA checked 
prefA UNchecked 
prefA UNchecked 

는 (분명히 .removePreference (prefB) 메소드 반환 널의 결과로) 선택을 취소 두 번 onPreferenceChangeListener 전화처럼 :

문제

은 단지 2 개 클릭이 잘 작동하고 내 로그 말하는 것입니다.

문제를 해결하는 방법에 대한 아이디어가 있으십니까?

+0

사실 대신 switchedOn – cYrixmorten

답변

4

이렇게하는 것이 효과가 있습니까?

prefA = (CheckBoxPreference)findPreference("preference_A"); 
prefA.setChecked(false); 

prefB = findPreference("preference_B"); 
category.removePreference(prefB); 

prefA.setOnPreferenceChangeListener(new OnPreferenceChangeListener() { 

@Override 
public boolean onPreferenceChange(Preference preference, Object newValue) { 

     boolean switchedOn = (Boolean)newValue; 
     if (switchedOn) { 
      Log.d("pref_test", "prefA checked"); 

      category.addPreference(prefB); 

     } else { 
      Log.d("pref_test", "prefA UNchecked"); 

      prefB = findPreference("preference_B"); 
      category.removePreference(prefB); 
     } 

     return true; 
    } 
}); 
+0

네의 반환하려고 돌려 문을 문제가 있었다 어쨌든, 도움을 주셔서 감사를 (여전히 비록 findpreference 필요) –

관련 문제