최대 수의 선택 가능한 옵션에 대한 ListPreference
-
19-09-2019 - |
문제
선호도 메뉴에 다음을 수행하는 요소가 있습니다.
- 옵션 목록을 표시하십시오.
- 많은 사람들이 선택할 수 있습니다
- 선택할 최대 옵션 양 2.
내가 생각한 가능성 :
- 분리 된 작업
PreferenceScreen
그리고 옵션을 표시합니다checkBoxes
, 그러나 Max 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);
}
제휴하지 않습니다 StackOverflow