我在比较OnSharedPreferenceChanged方法中的关键字符串时遇到了一些问题,并希望您能够看一下它 - 基本上问题是即使我知道并且可以控制台记录确切的字符串比较,语句块中的代码永远不会触发 - 我知道这是愚蠢的东西,但我只是看不到它
提前致谢
奥比
这是代码
public class WallpaperSettings extends PreferenceActivity implements SharedPreferences.OnSharedPreferenceChangeListener
{
public static final String TAG = "WallpaperSettings";
private static final String USE_CLOCK_TEXT = "useClockText";
private Preference _clockTextPosPicker;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
getPreferenceManager().setSharedPreferencesName(HexClockWallpaper.SHARED_PREFS_NAME);
addPreferencesFromResource(R.xml.hexclockwallpaper_settings);
getPreferenceManager().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
}
@Override
protected void onDestroy()
{
getPreferenceManager().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
super.onDestroy();
}
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
String key)
{
// [Log] key: 'useClockText'
Log.i(TAG, "key: '" + key + "'");
if (key == USE_CLOCK_TEXT)
{
// None of this is ever seen
Log.i(TAG, "key == " + USE_CLOCK_TEXT);
Boolean selected = sharedPreferences.getBoolean(key, true);
Log.i(TAG, "selected changed: " + selected);
if (selected)
{
getPreferenceScreen().removePreference(getClockTextPicker());
}
else
{
getPreferenceScreen().addPreference(getClockTextPicker());
}
}
}
public Preference getClockTextPicker()
{
if (_clockTextPosPicker == null)
_clockTextPosPicker = findPreference("clockTextPosPicker");
return _clockTextPosPicker;
}
}
答案 0 :(得分:0)
要比较两个String对象,您必须使用string1.equals(string2)
。以下是您可能会发现有用的链接:Java String Comparison
答案 1 :(得分:0)
在比较Java中的字符串时,请使用Object的equals
方法
e.g。 if ( string1.equals(string2) ) { ... }