0

こことグーグルで答えを探してみましたが、なかなか遠くまで行けませんでした。

私はlistPreferenceAndroidプラットフォームで、ユーザーがテキストの色を選択できるようにしようとしています。現在、デフォルト値を返すだけで、if/elseステートメントが機能しない理由がよくわかりません。

prefs.xml:

    <ListPreference
    android:title="textcolorpreference"
    android:key="list1"
    android:summary="Text Color"
    android:entries="@array/list"
    android:entryValues="@array/lValues"
    />

array.xml:

     <string-array name="list">
    <item>Red</item>
    <item>Green</item>
    <item>Blue</item>
    <item>Yellow</item>
    </string-array>
    <string-array name="lValues">
    <item>1</item>
    <item>2</item>
    <item>3</item>
    <item>4</item>
    </string-array>

Java:

    SharedPreferences getPrefs =
    PreferenceManager.getDefaultSharedPreferences(getBaseContext());


        String values = getPrefs.getString("list", "2");

        if(values.contentEquals("1")){
            tp.setColor(Color.RED);
        } else if(values.contentEquals("2")){
            tp.setColor(Color.GREEN);
        } else if(values.contentEquals("3")){
            tp.setColor(Color.BLUE);
        }else if(values.contentEquals("4")){
            tp.setColor(Color.YELLOW);
        }

現在、リスト設定のデフォルト値のみが機能します。たとえば、listPreferenceのデフォルト値String values = getPrefs.getString("list", "2")を取得color.GREENすると、設定変更リスナーを追加する必要があると思いますが、現在は実装できません。

私はあなたたちが提供することができるどんな助けにも非常に感謝するでしょう!

4

1 に答える 1

1

優先順位リストから正しい整数を取得できます1

Integer values = getPrefs.getInt("list1", 2);

次に、取得した値から切り替えることができます。

switch(values ) {
    case 1:
        tp.setColor(Color.RED);
        break;
    case 2:
        tp.setColor(Color.GREEN);
        break;
    case 3:
        tp.setColor(Color.BLUE);
        break;
    case 4:
        tp.setColor(Color.YELLOW);
        break;
    default:
        tp.setColor(Color.GREEN);
}
于 2013-02-10T14:47:21.463 に答える