私は EditTextPreference に従って、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" />
私の活動の 1 つで、値を読み取りました。しかし問題は、ユーザーが何も入力しない場合 ("")、アプリがクラッシュすることです。確かに、アクティビティで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 値を更新しません。まだ「」です。