我创建了一个正常工作的 onSharedPreferencesChangeListener。我知道这一点,因为当我设置侦听器时,我记录了侦听器并且它正在触发更改。
但是,当我尝试切换键变量时出现错误(说我需要 JRE 1.7+ 才能切换字符串),因此我将其更改为 if-elseif 语句。
if-elseif 语句没有触发,所以我将前两个更改为 if 语句,然后将 elseif 放在后面(认为 elseif 可能是问题所在)。仍然没有触发。
奇怪的是,当我记录事件触发器时,我输出“ ”+key+“ ”作为字符串,而键值是我正在测试的确切字符串。
这是我的代码,有人可以指出我正确的方向吗?
// logic for action when a shared preference is changed.
prefs.registerOnSharedPreferenceChangeListener( new SharedPreferences.OnSharedPreferenceChangeListener() {
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
String TAG = "UltimateScoreboard";
if (key == "Main_Clock_Minutes") {
msMainClockStart = Long.valueOf( prefs.getString( "Main_Clock_Minutes", "0" ) ) * 60000;
Log.i( TAG, key + " changed: " + String.valueOf(msMainClockStart) );
}
if ( key == "Use_ShotClock" ) {
useShotClock = prefs.getBoolean( "Use_ShotClock", false );
if( useShotClock )
btnShotClock.setVisibility( View.VISIBLE );
else
btnShotClock.setVisibility( View.INVISIBLE );
Log.i( TAG, key );
}
else if ( key == "Shot_Clock_Seconds" ) {
msShotClockStart = Long.valueOf( prefs.getString( "Shot_Clock_Seconds", "0" ) ) * 1000;
Log.i( TAG, key + " changed: " + Long.valueOf(msShotClockStart) );
}