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 に答える