我正在编写一个PreferenceActivity
和多个PreferenceFragment
的程序。用户选择的一个选项是要连接的服务器,这是从XML填充的。
<string-array name="server_names">
<item>test</item>
<item>item1</item>
<item>item2</item>
</string-array>
<string-array name="server_addresses">
<item>10.10.10.1</item>
<item>10.10.10.2</item>
<item>10.10.10.3</item>
</string-array>
这显然可以正常工作,你可以在列表中找到三个名字。但是,有一个单独的片段允许用户输入名称和IP地址,然后将其作为额外选项添加到下拉列表中。
我有一个有效的解决方案,包括加载外部文件,清除条目并添加文件中的条目。这是“好的”#39;但是我想用sharedpreferences
来保存这些额外的值。我的问题是,如何使用编辑器编写每次启动应用时都会保存的额外选项?
我查看过使用Editor
,putStringSet
和commit
,但添加的选项并未出现在下拉菜单中。有些相关帖子似乎与TextPreference
有关,但这些解决方案无法解决我的问题。
编辑,这是我创建ListPreference的方式:
<ListPreference
android:entries="@array/server_names"
android:entryValues="@array/server_addresses"
android:key="@string/countryListId"
android:negativeButtonText="@null"
android:positiveButtonText="@null"
android:title="@string/pref_title_select_com_target"
android:enabled="true"
android:shouldDisableView="false" />
我在标签上有一个点击处理程序,可以添加到ListPreference:
public boolean onPreferenceClick(Preference preference) {
new AlertDialog.Builder(getActivity())
.setTitle("Add new server")
.setMessage("Confirm you wish to add the server?")
.setIcon(android.R.drawable.ic_dialog_alert)
.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
/* command in here to edit the server_names and server_addresses */
}})
.setNegativeButton(android.R.string.no, null).show();
return true;
}
});
答案 0 :(得分:1)
写入共享首页
.propos_underline{
height: 1px;
width: 60%;
margin: 0 auto;
background-color: #d4d8da;
position: relative;
}
.propos_underline .icon{
position: absolute;
width: 70px;
height: 40px;
background: #ffffff;
font-size: 30px;
margin: auto;
top: 0;
bottom: 0;
left: 0;
right: 0;
color: #d4d8da;
}
.icon-cubes:before {
content: "\e993";
}
阅读:
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putInt("highscore", 5);
editor.commit();
这是你要问的吗?
编辑:
查看您的代码,您似乎错过了实际的保存。
他基本上说每次打开对话框时都会加载xml中的列表。您需要更改行为以包含SharedPreferences中的首选项。
您可以使用setEntries()和更改此行为 ListPreference的setEntryVaues()方法