1

我已经设置了 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 文件中的字符串。

提前致谢

4

2 回答 2

1

您可以使用 SharedPreferences 对象的 getString() 方法从共享首选项中检索字符串。请参阅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();
}
于 2012-09-21T16:23:57.283 回答
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));
    }
于 2012-09-21T16:25:02.320 回答