Преобразование Locale [] в CharSequence [] для размещения внутри ListPreference в приложении Android - PullRequest
1 голос
/ 13 октября 2011

В моем приложении для Android я хочу поместить список всех доступных локалей на телефоне в ListPreference в моем PreferenceActivity, чтобы пользователь мог выбрать, какой из них он хочет изменить, вывод символа валюты.

Пока я пробовал это:

addPreferencesFromResource(R.xml.preferences);
PreferenceScreen root = getPreferenceManager().createPreferenceScreen(this);

ListPreference listPref = (ListPreference) root.findPreference("list");
Locale[] availableLocales = Locale.getAvailableLocales();

CharSequence[] entries = new CharSequence[Locale.getAvailableLocales().length];
CharSequence[] entriesVal = new CharSequence[Locale.getAvailableLocales().length];

for (int i = 0; i < entriesVal.length; i++) {
        entries[i] = availableLocales[i].getDisplayCountry();
        entriesVal[i] = Integer.toString(i);
}

listPref.setEntries(entries);
listPref.setEntryValues(entriesVal);

Я получаю исключение JavaNullPointer в этой строке listPref.setEntries(entries);, поэтому я считаю, что я не сформировал CharSequence должным образомпоэтому ListPReference не может его прочитать.

есть идеи?

1 Ответ

0 голосов
/ 13 октября 2011

Кажется более вероятным, что listPref на самом деле равно нулю, то есть root.findPreference("list") возвращает null. Это то, что вы должны посмотреть (и хотя бы проверить) в первую очередь.

...