設定メニューに、次のことを行う要素が必要です。
- オプションのリストを表示します。
- 選択可能なものが多い
- 選択できるオプションの最大数 2.
私が考えた可能性:
PreferenceScreen
オプションを分離して として表示していますcheckBoxes
が、最大 2 つのオプションのロジックをどこに配置すればよいかわかりません。- 伸ばし
DialogPreference
て手でやる。
最善の方法は何ですか?
設定メニューに、次のことを行う要素が必要です。
私が考えた可能性:
PreferenceScreen
オプションを分離して として表示していますcheckBoxes
が、最大 2 つのオプションのロジックをどこに配置すればよいかわかりません。DialogPreference
て手でやる。最善の方法は何ですか?
拡張DialogPreference
すると、ルック アンド フィールの点で最も近くなります。私の経験では、Preference
クラスはかなり柔軟性がなく、拡張できません。
についてはあまり覚えていませんがPreferenceScreen
、似ていると思います。
私が取り組んだアプリでは、項目 onClickIntent
から起動された個別のアクティビティを使用することになりました。Preference
これにより、通常よりも少し複雑な検証ロジックを必要とする設定画面を簡単に開発できました。
最大 2 つのオプションのロジックを に入れることができます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);
}