3

別のアプリに基づいてアプリを構築する必要があります。私の PreferenceScreen には、2 つの ListPreference オブジェクトがあります。2番目は最初に依存し、最初が選択されるまで無効になります(まだそれを理解する必要があります)

アプリの最初の起動時に最初の ListPreference が選択されないように設定したいと考えています。キーを割り当てなくてもこれを行うことができますが、キーなしで ListPreference の値を取得することはできますか? これを行う別の方法はありますか?

ListPreferce にキーがない場合は、次のコードを使用して PreferenceScreen の設定にアクセスできます。

ListPreference locationList = (ListPreference)getPreferenceScreen().getRootAdapter().getItem(1);'

参照が必要なすべての設定に対してこれを行いました。SharedPreference を使用した方がよいでしょうか?

4

2 に答える 2

0

Preferences XML では、2 番目の で次を使用できますListPreference

android:dependency="key_of_first_listpreference"
android:enabled="false"

次に、コードにリスナーを追加して、最初の listpreference が選択されたときに 2 番目の listpreference を入力して、次のように有効にすることができます。

final PreferenceScreen prefsRoot = (PreferenceScreen)getPreferenceScreen();
final ListPreference lpFirst  = (ListPreference) prefsRoot.findPreference("first_listpref_key");
final ListPreference lpSecond = (ListPreference) prefsRoot.findPreference("second_listpref_key");

lpFirst.setOnPreferenceChangeListener(new OnPreferenceChangeListener(){
    @Override public boolean onPreferenceChange ( Preference preference, Object newValue )
    {
        lpSecond.setEntries(R.array.bg_colors);
        lpSecond.setEntryValues(R.array.bg_color_values);
        lpSecond.setEnabled(true);
        return true;
    }
});
于 2013-07-13T16:15:04.240 に答える