我有一个"更改密码"在我的应用程序设置中,我希望用户能够输入3个文本字段(当前密码,新密码,重复密码),然后只需单击确定按钮即可保存设置。但问题是我无法找到(或能够创建)任何可以显示多个项目的偏好(在这里3 EditTextPreference
s)。
以下代码在点击进行编辑时只显示一个文本框。
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<EditTextPreference
android:capitalize="none"
android:password="true"
android:defaultValue=""
android:inputType="textCapWords"
android:key="example_text"
android:maxLines="1"
android:selectAllOnFocus="true"
android:singleLine="true"
android:title="@string/pref_default_current_password" />
</PreferenceScreen>
我正在寻找类似的东西:
<Group>
<EditTextPreference
android:capitalize="none"
android:password="true"
android:defaultValue=""
android:inputType="textCapWords"
android:key="example_text"
android:maxLines="1"
android:selectAllOnFocus="true"
android:singleLine="true"
android:title="@string/pref_default_current_password" />
<EditTextPreference
android:capitalize="none"
android:password="true"
android:defaultValue=""
android:inputType="textCapWords"
android:key="example_text"
android:maxLines="1"
android:selectAllOnFocus="true"
android:singleLine="true"
android:title="@string/pref_default_new_password" />
<EditTextPreference
android:capitalize="none"
android:password="true"
android:defaultValue=""
android:inputType="textCapWords"
android:key="example_text"
android:maxLines="1"
android:selectAllOnFocus="true"
android:singleLine="true"
android:title="@string/pref_default_repeat_password" />
</Group>
答案 0 :(得分:1)
您需要创建自定义DialogPreference
。您的方法看起来有缺陷,您只需要将一个首选项值存储在SharedPreferences
。
创建一个扩展DialogPreference
的类,返回您的膨胀视图onCreateDialogView()
,并在单击肯定按钮时添加一些逻辑。您可以管理片段或活动类,只需扩展DialogPreference
:
public class CustomPreference extends DialogPreference {
EditText first;
EditText second;
EditText third;
protected View onCreateDialogView() {
View v = LayoutInflater.from(getContext()).inflate(R.layout.three_edit_texts, null);
first = v.findViewById(...);
second = v.findViewById(...);
third = v.findViewById(...);
return v;
}
}
然后在XML中添加一个:
<com.your.package.CustomPreference />
答案 1 :(得分:-1)
按下提交按钮后,您需要按顺序进行。
Editor editor = sharedpreferences.edit();
editor.putString("key1", "value1");
editor.putString("key2", "value2");
editor.putString("key3", "value3");
editor.commit();
或者更好地创建共享首选项util以避免此类锅炉板。