選択可能なオプションの最大数を含む ListPreference
-
19-09-2019 - |
質問
設定メニューに次のことを行う要素を追加したいと考えています。
- オプションのリストを表示します。
- 多くは選択可能です
- 選択できるオプションの最大数 2.
私が考えた可能性:
- 別居をしている
PreferenceScreen
そしてオプションを次のように表示しますcheckBoxes
, ですが、最大2オプションのロジックをどこに配置すればよいのかわかりません。 - 延長中
DialogPreference
そしてそれを手作業でやっているのです。
最善の方法は何ですか?
解決
の拡張DialogPreference
は、ルック&フィールの面であなたに最も近くなるだろう。 Preference
クラスは、私の経験ではかなりunflexibleと非拡張されます。
私はPreferenceScreen
についてはあまり覚えていないことができますが、私はそれが似て想像します。
私が働いていたアプリでは、我々はIntent
アイテムのonClickからPreference
から起動別々の活動を、使用して終了しました。これは、私たちは簡単に通常よりも少し複雑な検証ロジックを必要好みの画面を開発することができます。
他のヒント
あなたは<のhref =「http://developer.android.com/intl/fr/reference/android/content/SharedPreferences.OnSharedPreferenceChangeListener.html」のrel = "nofollowをnoreferrerに最大二つのオプションのロジックを置くことができます「> 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);
}