56

アクティビティの開始時に ListPreference のデフォルト値を設定する必要があります。試してみましListPreference.setDefaultvalue("value");たが、リストの最初のエントリがデフォルトになります。条件を確認し、その条件を満たす値をデフォルトとして設定する必要があるため必要なので、xmlファイルからはできないと思います(with android:defaultValue

たとえば、arrays.xml に次の値の配列があるとします。

<string-array name="opts">
    <item>red</item>
    <item>green</item>
    <item>blue</item>
</string-array>

<string-array name="opts_values">
    <item>1</item>
    <item>2</item>
    <item>3</item>
</string-array>

PreferenceScreen xml で:

<ListPreference
    android:title="Colour select"
    android:summary="Select your favourite"
    android:key="colour"
    android:entries="@array/opts"
    android:entryValues="@array/opts_values" />

アクティビティでは、次のようなことをしたいと思います:

String mycolour;
if (something) {
    mycolour="1";
} else {
    mycolour="2";
}
ListPreference colour = (ListPreference) findPreference ("colour");
colour.setDefaultValue(mycolour);

しかし、デフォルトで最初の選択を行うため、機能しません。別のものをデフォルトにする方法を教えてください。ありがとう。

4

11 に答える 11

26

やってみました:

setValueIndex(int index);
于 2011-03-04T17:50:13.173 に答える
11

私の悪い英語を申し訳ありません。

  1. リスト項目
  2. リストを取得する 値が null かどうかを確認します。null の場合は、デフォルト値に設定されます。

コード:

ListPreference dataPref = (ListPreference) findPreference("keyList");

if(dataPref.getValue() == null){
    dataPref.setValueIndex(0); //set to index of your deafult value
}
于 2014-02-06T22:20:02.120 に答える
3

または、試すこともできますcolour.setValue(mycolour);

于 2012-04-10T10:29:07.563 に答える
3
((ListPreference) findPreference("pref_language")).setValue(Locale
                .getDefault().getLanguage());

setValue()は ListPreference のメソッドであり、setDefaultvaluePreference のメソッドです

于 2014-11-18T09:38:41.787 に答える
3

他の誰かがこの問題を抱えている場合の記録のためだけに:

setValueIndex(int X)は値 @index X をデフォルト値に設定しています -それはおそらくあなたが探しているものです.

を追加した後で、この値を設定してください。(ばかげた間違いですが、30分かかりました)

于 2013-07-25T14:02:02.667 に答える
3

実際には、アプリを再ビルドした後も SharedPreferences が保持されるためです。アンインストールして、もう一度やり直してください。

于 2016-09-09T05:24:57.017 に答える