gpt4 book ai didi

java - Osmdroid 夜间模式及首选项

转载 作者:行者123 更新时间:2023-12-01 16:13:34 26 4
gpt4 key购买 nike

所以我想制作一个 CheckBoxPreference 来打开 osmdroid 中的夜间模式。但是代码没有任何作用。我在没有 PreferenceScreen 的情况下做了同样的事情,一个带有开关的普通 LinearLayout,它工作得很好,但我想使用首选项。 有人知道,出了什么问题吗?


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.allgemein);

final SharedPreferences sharedPreferences = this.getSharedPreferences("com.example.gruppen_app", Context.MODE_PRIVATE);


@SuppressLint("ResourceType") final CheckBoxPreference night_mode = (CheckBoxPreference) findPreference(this.getResources()
.getString(R.id.night_mode_btn));

night_mode.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
if(night_mode.isChecked()) {
sharedPreferences.edit().putBoolean("isChecked", true).apply();
map.getOverlayManager().getTilesOverlay().setColorFilter(TilesOverlay.INVERT_COLORS);
}else{
sharedPreferences.edit().putBoolean("isChecked", false).apply();
}

return false;
}
});




}
}

最佳答案

@SuppressLint("ResourceType") final CheckBoxPreference night_mode = (CheckBoxPreference) findPreference(this.getResources()
.getString(R.id.night_mode_btn));

R.id 返回整数,而不是字符串。

这里:

public boolean onPreferenceChange(首选项首选项,Object newValue)

你可以这样做:

boolean isChecked = Boolean.parseBoolean(String.valueOf(newValue));

然后就:

sharedPreferences.edit().putBoolean("isChecked", isChecked).apply();

关于java - Osmdroid 夜间模式及首选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62465679/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com