質問

設定メニューに次のことを行う要素を追加したいと考えています。

  • オプションのリストを表示します。
  • 多くは選択可能です
  • 選択できるオプションの最大数 2.

私が考えた可能性:

  1. 別居をしている PreferenceScreen そしてオプションを次のように表示します checkBoxes, ですが、最大2オプションのロジックをどこに配置すればよいのかわかりません。
  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);
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top