0

設定メニューに、次のことを行う要素が必要です。

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

私が考えた可能性:

  1. PreferenceScreenオプションを分離して として表示していますcheckBoxesが、最大 2 つのオプションのロジックをどこに配置すればよいかわかりません。
  2. 伸ばしDialogPreferenceて手でやる。

最善の方法は何ですか?

4

2 に答える 2

3

拡張DialogPreferenceすると、ルック アンド フィールの点で最も近くなります。私の経験では、Preferenceクラスはかなり柔軟性がなく、拡張できません。

についてはあまり覚えていませんがPreferenceScreen、似ていると思います。

私が取り組んだアプリでは、項目 onClickIntentから起動された個別のアクティビティを使用することになりました。Preferenceこれにより、通常よりも少し複雑な検証ロジックを必要とする設定画面を簡単に開発できました。

于 2010-01-06T15:37:46.153 に答える
2

最大 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);
}
于 2010-01-06T16:16:51.753 に答える