#java #android #locale #listpreference
#java #Android #locale #listpreference
Вопрос:
В моем приложении для Android я хочу поместить список всех доступных локалей на телефоне в ListPreference
in my 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:
Кажется более вероятным, что listPref
на самом деле это значение равно нулю, т. Е. root.findPreference("list")
Возвращается null
. Это то, что вы должны изучить (и, по крайней мере, проверить) в первую очередь.
Комментарии:
1. Вы правы, какое значение ListPreference я должен искать тогда? не этот: android:key=»список»
2. @zeroFiG: Я не могу сказать, что я когда-либо занимался разработкой Android самостоятельно, так что я действительно предполагаю… но вы звонили
addPreferencesFromResource
?3. @zeroFiG: Вы уверены, что этого не должно быть
root.addPreferencesFromResource
? Или вызватьfindPreference
this
вместоroot
?4. Ах, вот ты где! ListPreference listPref = (ListPreference) this.findPreference(«список»); Спасибо!