문제

선호도 메뉴에 다음을 수행하는 요소가 있습니다.

  • 옵션 목록을 표시하십시오.
  • 많은 사람들이 선택할 수 있습니다
  • 선택할 최대 옵션 양 2.

내가 생각한 가능성 :

  1. 분리 된 작업 PreferenceScreen 그리고 옵션을 표시합니다 checkBoxes, 그러나 Max 2 옵션의 논리를 어디에 배치할지 모르겠습니다.
  2. 확장 DialogPreference 그리고 손으로하고 있습니다.

가장 좋은 방법은 무엇입니까?

도움이 되었습니까?

해결책

확장 DialogPreference 모양과 느낌의 관점에서 가장 가까운 사람을 얻을 수 있습니다. 그만큼 Preference 수업은 내 경험상 상당히 융통성이없고 확장 할 수 없습니다.

나는 너무 많이 기억할 수 없다 PreferenceScreen, 그러나 나는 그것이 비슷하다고 생각합니다.

내가 작업 한 앱에서 우리는 별도의 활동을 사용하여 시작했습니다. Intent a Preference 항목 on Click. 이를 통해 검증 로직이 평소보다 조금 더 복잡한 환경 설정 화면을 쉽게 개발할 수있었습니다.

다른 팁

최대 두 가지 옵션의 논리를 OnSharedPreferenceChangeListener.

따라서 유효하지 않은 조합이 선택되면 변경할 때 모든 선호도를 듣고 업데이트하십시오.

따라서 코드는 다음과 같습니다.

public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,String key) {
    //Code to calcuate how many are selected
    int code = numberSelected();

    if (count > 2) {
        sharedPreferences.edit().putBoolean(key,false).commit();
        Toast.makeText(this,"Can't select more than two!",Toast.LENGTH_LONG).show();
    }
}

당신이 당신의 자신을 만들면 PreferenceActivity 그것을 구현합니다 OnSharedPreferenceChangeListener 청취자가 다음과 같은 작업을 수행 해야하는 경우에만 청취 할 수 있습니다.

@Override
protected void onResume() {
super.onResume();
    //Register the listener
    getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
}

@Override
protected void onPause() {
    super.onPause();
    // Unregister the listener
    getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top