我正在编写一个程序,它具有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地址,然后将其添加到下拉列表中作为额外选项。
我有一个工作解决方案,涉及加载外部文件,清除条目并添加文件中的条目。这是'好',但我想用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;
}
});
你设法解决它ListPreference的方法,这种行为? – CantThinkOfAnything
我认为你给了我一个很好的领导,我现在正在尝试一些东西。我相信我误解了SharedPreferences与DefaultSharedPreferences。我正在调查使用setEntries,并会接受答案,如果这样的作品..感谢您的帮助! – Dustybin80
你成功了吗? :D – CantThinkOfAnything