ListPreference编码值不在if语句中执行

时间:2011-09-08 21:09:18

标签: android if-statement listpreference arrays getstring

你可以查看我的代码是否有遗漏?

我试图在if语句中使用listpreference中的值,但if语句永远不会响应listpreference中存储的值。

这里是我正在使用的编码:

    String stringChimeVolume = clockSettings.getString("ChimeVolume",
            "Default");


    Toast.makeText(context, "The preference is: " + stringChimeVolume,
    Toast.LENGTH_SHORT).show();

    if (stringChimeVolume == "2") {
        manager.setStreamVolume(AudioManager.STREAM_MUSIC,
                2, AudioManager.FLAG_VIBRATE);

        Toast.makeText(context, "The volume is at 2: ",
                Toast.LENGTH_SHORT).show();

    } else if (stringChimeVolume == "3") {
        Toast.makeText(context, "The volume is at 3: ",
                Toast.LENGTH_SHORT).show();

        manager.setStreamVolume(AudioManager.STREAM_MUSIC,
                7, AudioManager.FLAG_VIBRATE);
    }

    else if (stringChimeVolume == "4") {
        manager.setStreamVolume(AudioManager.STREAM_MUSIC,
                15, AudioManager.FLAG_VIBRATE);
    }

我使用了第一个Toast语句来确保值存在。它的值为2,但“2”的if语句中的Toast没有执行。

这是我用于listpreference的arrays.xml:

<string-array name="chimeVolumeLabels">
    <item>Use System Volume</item>
    <item>Emad</item>
    <item>Medium</item>
    <item>Loud</item>
</string-array>

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

这是带有listpreference的settings.xml:

<PreferenceCategory android:title="Media:">
    <CheckBoxPreference android:key="ChimeWhenMusicIsPlaying"
        android:title="@string/ChimeWhenMusicIsPlayingTitle" android:summary="@string/ChimeWhenMusicIsPlayingSummary"
        android:defaultValue="false" />

    <ListPreference android:title="Chime Volume"
        android:key="ChimeVolume" android:summary="Select volume for the chiming sound."
        android:entries="@array/chimeVolumeLabels" android:entryValues="@array/chimeVolumeValues"
        android:defaultValue="1" />

</PreferenceCategory>

非常感谢所有帮助。

诚然, 伊马德

1 个答案:

答案 0 :(得分:1)

使用.equals而不是== since ==比较引用而不是实际值

喜欢

if (stringChimeVolume.equals( "2")) instead of 


if (stringChimeVolume== "2")