我在preferenceTextPreference之后的preferences.xml中:
<EditTextPreference
android:name="@string/pref_test"
android:defaultValue="0.6"
android:inputType="numberDecimal"
android:key="editTestPref"
android:maxLength="5"
android:summary=""
android:title="@string/pref_test" />
在我的一项活动中,我读了这个值。 但问题是如果用户没有输入任何内容(“”),我的应用程序崩溃了。当然我可以在活动中做一个if语句来检查它是否为空字符串,但我想做以下事情:
在Preferences.java中,我得到了preferenceEditText的更改。如果用户输入“”,我想设置一个默认值:
if (preference.getKey().equals("editTestPref")) {
if(newValue.equals(""))
{
final SharedPreferences.Editor prefsEditor = prefs.edit();
prefsEditor.putString("editTestPref", "1");
prefsEditor.commit();
summary = "0.6"; // to update the summary of preference
}
else
{
summary= (String) newValue;
}
}
我也试过这段代码:
SharedPreferences customSharedPreference = getSharedPreferences(
"myCustomSharedPrefs", Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = customSharedPreference
.edit();
editor.putString("editTestPref", "1");
editor.commit();
两者都不起作用,它们不更新sharedPreference值。它还是 ””。
答案 0 :(得分:1)
像这样实施SharedPreferences.OnSharedPreferenceChangeListener
:
public class YourPrefsActivity extends PreferenceActivity implements SharedPreferences.OnSharedPreferenceChangeListener {
// ... your existing code ...
@Override
protected void onResume() {
super.onResume();
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
// Set up a listener whenever a key changes
sharedPreferences.registerOnSharedPreferenceChangeListener(this);
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
if ("editTestPref".equals(key)) {
String val = sharedPreferences.getString("editTestPref", "");
if (val == null || val.trim().equals("")) {
val = "0.6"; // <-- your default value
sharedPreferences.edit().putString(key, val).commit();
}
}
}
}
当用户更改首选项值时调用该方法,并检查他是否输入了空字符串。如果是,则该值将替换为您的默认值。
答案 1 :(得分:0)
您应该使用if(newValue.isEmpty())
而不是检查字符
答案 2 :(得分:-1)
我在你的代码中没有看到任何错误,但如果它有效,请尝试这个..
替换此
prefsEditor.putString("editTestPref", "1");
与
prefsEditor.putString("editTestPref", String.valueof(1));
祝你好运。