gpt4 book ai didi

java - 在SharedPreferenceChanged 上设置首选项值的格式

转载 作者:太空宇宙 更新时间:2023-11-04 11:48:18 24 4
gpt4 key购买 nike

我想在更改后从名为 url 的共享首选项中删除尾部斜杠。

它似乎工作正常,但在我的代码中,我在将所有 EditTextPreferences 更改为包含其值后更新它们的摘要。

我的问题是,即使尾部斜杠已从 url 中删除,但在关闭并重新打开首选项 Activity 之前,我实际上看不到 EditTextPreference 摘要中的更改。

我尝试使用 commit() 而不是 apply(),但没有帮助。

这是我的代码:

public class SettingsFragment extends PreferenceFragment implements SharedPreferences.OnSharedPreferenceChangeListener {
private static final String TAG = "SettingsFragment";

@Override
public void onCreate (Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
getPreferenceScreen().removePreference(findPreference("service_running"));
}

@Override
public void onResume () {
super.onResume();

for (int i = 0; i < getPreferenceScreen().getPreferenceCount(); i++) {
Preference preference = getPreferenceScreen().getPreference(i);
updatePreference(preference);
}
}

@Override
public void onSharedPreferenceChanged (SharedPreferences sharedPreferences, String key) {
// remove trailing slashes from url
if (key.equals("url")) {
String value = sharedPreferences.getString(key, "");

if (value.endsWith("/")) {
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString(key, value.substring(0, value.length() - 1));
editor.apply();
}
}

updatePreference(findPreference(key));
}

private void updatePreference (Preference preference) {
if (preference instanceof EditTextPreference) {
EditTextPreference editTextPreference = (EditTextPreference)preference;
editTextPreference.setSummary(editTextPreference.getText());
}
}
}

最佳答案

使用 setText 而不是 Editor 解决了该问题。

代码:

    if (key.equals("url")) {
String value = sharedPreferences.getString(key, "");

if (value.endsWith("/")) {
EditTextPreference editTextPreference = (EditTextPreference)findPreference(key);
editTextPreference.setText(value.substring(0, value.length() - 1));
}
}

关于java - 在SharedPreferenceChanged 上设置首选项值的格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42102935/

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