我有一个奇怪的错误。当偏好改变时,我会比较偏好更改。字符串比较失败 - 共享首选项密钥
当首选项发生变化时,它会给我一个已更改密钥的字符串。
我已经列出了IF语句来检查哪些语句发生了变化并更新了当前的首选项(性能等,因为我们不能使用sharedprefs onDestory,所以我们必须一次完成一个..)
无论如何其他键正在工作,但这似乎最终失败。在这里:
首先我们有XML:(PS这个功能改变了位图的大小在应用程序内)
这是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);
}
}
和提示的第一百万个问题'为什么比较==字符串'失败。我的意思是,这不像是这个网站的“常见问题”列表中的第一点..哦,等待 – Voo 2012-02-08 21:06:42
虽然共享首选项可能有一些waryid数组,但都是来自它的XML变量。 – 2012-02-08 21:14:05