字符串比较失败 - 共享首选项键

时间:2012-02-08 21:05:21

标签: java android live-wallpaper

我有一个奇怪的错误。我在偏好改变时比较偏好变化。

当首选项更改时,它会给我一个更改密钥的字符串。

我已经制作了一个IF状态列表来检查哪个语句发生了变化并更新了当前的首选项(性能等等,因为我们不能使用sharedprefs onDestory,所以我们必须一次做一个..)

无论如何其他键正在工作,但这一个似乎最终失败了。这里:

首先我们有XML :( PS这个函数改变了app中位图的大小)

这是在values.xml

<string-array name="itemSize">
    <item>Small</item>
    <item>Medium</item>
    <item>Large</item>
</string-array>
<string-array name="itemSizeNumbers">
    <item>8</item>
    <item>12</item>
    <item>18</item>
</string-array>

这是在settings.xml

<ListPreference
    android:title="Item Size"
    android:summary="Set the Item size."
    android:key="ItemSize"
    android:defaultValue="Medium"
    android:entries="@array/ItemSize"
    android:entryValues="@array/ItemSizeNumbers"
/>

更改首选项时,将调用此函数:

public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) 
    {
        if(started)
        {
            _battlefield.upDateValues(key);
        }
    }

传递到:(可能是问题出在哪里)

public void upDateValues(String key)
{
            //This returns ItemSize on item size change.
    Log.w("myapp", key);
    String nkey = key;

    if(nkey == "Items")
    {
                    //This one works
        this._no_of_Items = this.prefs.getInt("Items", 4);
    }

    if(nkey == "respawn")
    {
                    //This one works
        this._respawn_time = this.prefs.getInt("respawn", 1);
    }

            //The fail zone.
    if(nkey == "ItemSize")
    {
                    //This one does not work! Key outputs ItemSize ????
        Log.w("myapp", "Item size activated");

        this._items_screen_percentage = this.prefs.getInt("ItemSize", 10);

        this.initializeBitmaps();

        //this.initialize(_context, _surfaceHolder, prefs);
    }
}

1 个答案:

答案 0 :(得分:1)

你应该使用equals方法来比较String的内容。

if (str1.equals(str2)) {
       ...
}

看看这里:

http://www.zparacha.com/java-string-comparison/