我有一个奇怪的错误。我在偏好改变时比较偏好变化。
当首选项更改时,它会给我一个更改密钥的字符串。
我已经制作了一个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);
}
}
答案 0 :(得分:1)
你应该使用equals方法来比较String的内容。
if (str1.equals(str2)) {
...
}
看看这里: