根據the Android guide我試圖使用偏好片段實現首選項。在我的preferences.xml聲明:SwitchPreferences多次調用onPreferenceChange()方法
<SwitchPreference
android:key="enable_wifi"
android:title="Enable WiFi"
/>
,比類thah在onCreate方法擴展PreferenceFragment我做的:
public class FragmentSettings extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
mEnableWifi = (SwitchPreference) findPreference(enable_wifi);
mEnableWiFi.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
Log.i(getClass().getName(), preference.getKey()
+ String.valueOf(newValue));
}
}
而作爲一個結果我得到了我短聲在SwitchPreferene或交換機內部日誌顯示
enable_wifi false
enable_wifi false
enable_wifi true
enable_wifi true
所以這就是爲什麼我認爲多次調用監聽器的原因。如何處理它或修復它?
如果問題是缺少'return'語句,代碼是否會編譯?日誌表明代碼編譯得很好。 – Vikram
@Vikram如果return語句不見了,也許別的東西也是?我們如何才能知道問題出在哪裏?我們所能做的只是猜測然後:-) – Simas
我絕對同意你 - 很難說出問題在哪裏。我只想說,代碼不會編譯時會丟失返回語句。雖然這是一個很好的抓住:)) – Vikram