Почему при сравнении результата prefs.getString с нулем я получаю false? - PullRequest
1 голос
/ 21 марта 2011

У меня есть следующий элемент в preferences.xml :

    <ListPreference android:key="pref_movies_min_imdb"
        android:title="@string/pref_movies_min_imdb" 
        android:summary="@string/pref_movies_min_imdb_summary"
        android:entries="@array/pref_movies_min_imdb_array_entries"
        android:entryValues="@array/pref_movies_min_imdb_array_values" 
        android:defaultValue="0"/>

array.xml

<string-array name="pref_movies_min_imdb_array_entries">
    <item>n/a</item>
    <item>1</item>
    <item>2</item>
    <item>3</item>
    <item>4</item>
    <item>5</item>
    <item>6</item>
    <item>7</item>
    <item>8</item>
    <item>9</item>
    <item>10</item>
</string-array>
<string-array name="pref_movies_min_imdb_array_values">
    <item>0</item>
    <item>1</item>
    <item>2</item>
    <item>3</item>
    <item>4</item>
    <item>5</item>
    <item>6</item>
    <item>7</item>
    <item>8</item>
    <item>9</item>
    <item>10</item>
</string-array>

Пользователь еще не выбрал значение в настройках. Но в следующем коде * imdb_rating_min * добавляется к url :

String minIMDB = prefs.getString("pref_movies_min_imdb", "0");
if (minIMDB != "0"){
    url += "&imdb_rating_min=" + minIMDB;
}

Отладчик показывает, что minIMDB = 0, url = "& imdb_rating_min = 0"

Почему так происходит?

1 Ответ

4 голосов
/ 21 марта 2011

Используйте !minIMDB.equals("0") вместо !=:

if (!minIMDB.equals("0")){
    url += "&imdb_rating_min=" + minIMDB;
}

== и != сравнивают позиции в памяти. .equals метод сравнения содержимого Strings.

...