我已经设置了如下的SharedPreferences:
Editor editor = getSharedPreferences("FileName", MODE_PRIVATE).edit();
editor.clear();
editor.putString("chicago", "Chicago, IL");
editor.putString("london", "London, UK");
editor.putString("sanjose", "San Jose, CA");
editor.putString("washington", "Dulles, VA");
editor.commit();
目前我从数组填充AlertDialog,我想使用SharedPreferences文件,所以我最终可以动态添加项目等。
我现在用来填充的代码是:
private void openServerDialog() {
new AlertDialog.Builder(this)
.setTitle(R.string.server_title)
.setItems(R.array.serverchoice,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialoginterface,
int i) {
setServer(i);
}
})
.show();
}
所以我只想停止使用数组“serverchoice”,而是使用SharedPreferences文件中的字符串。
提前致谢
答案 0 :(得分:1)
您可以使用SharedPreferences对象的getString()方法从共享首选项中检索字符串。请参阅the documentation for SharedPreferences。
修改强> OP发表评论后调整后的答案。
private void openServerDialog() {
SharedPreferences sharedPrefs = getSharedPreferences("FileName", MODE_PRIVATE);
Map<String, ?> sharedPrefsMap = sharedPrefs.getAll();
ArrayList<String> stringArrayList = sharedPrefsMap.values();
CharSequence[] prefsCharSequence = stringArrayList.toArray(new CharSequence[stringArrayList.size()]);
new AlertDialog.Builder(this)
.setTitle(R.string.server_title)
.setItems(prefsCharSequence,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialoginterface,
int i) {
setServer(i);
}
})
.show();
}
答案 1 :(得分:0)
Use getAll() method in SharedPreferences to get all the keys. And get all the keys and values and display in dialog.
SharedPreferences prefs = getSharedPreferences("FileName", MODE_PRIVATE);
Map<String, ?> map = prefs.getAll();
Set<String> keys = map.keySet();
for(String key : keys) {
Log.d(TAG, "key : " + key);
Log.d(TAG, "value : " + map.get(key));
}