Java 已更改共享首选项上的格式首选项值
我想在一个名为Java 已更改共享首选项上的格式首选项值,java,android,Java,Android,我想在一个名为url的共享首选项被更改后,删除其尾部斜杠 它似乎工作得很好,但在我的代码中,我正在更新所有EditTextPreferences的摘要,在它们被更改为包含它们的值之后 我的问题是,即使从url中删除了尾随斜杠,但在关闭并重新打开首选项活动之前,我实际上看不到EditTextPreference摘要中的更改 我尝试使用commit()而不是apply(),但没有效果 这是我的密码: public class SettingsFragment extends PreferenceFr
url
的共享首选项被更改后,删除其尾部斜杠
它似乎工作得很好,但在我的代码中,我正在更新所有EditTextPreferences的摘要,在它们被更改为包含它们的值之后
我的问题是,即使从url
中删除了尾随斜杠,但在关闭并重新打开首选项活动之前,我实际上看不到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());
}
}
}
公共类设置片段扩展首选项片段实现SharedReferences.OnSharedPreferenceChangeListener{
私有静态最终字符串标记=“SettingsFragment”;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
getPreferenceScreen().GetSharedReferences().RegisterOnSharedReferenceChangeListener(此);
getPreferenceScreen().removePreference(FindReference(“正在运行的服务”);
}
@凌驾
恢复时公开作废(){
super.onResume();
对于(int i=0;i
使用setText
而不是编辑器解决了问题
代码:
使用setText
而不是编辑器解决了该问题
代码:
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));
}
}