MultiSelectListPreference setEntries не отображается
Я пытаюсь создать приложение для Android, и мне нужно MultiSelectListPreference
опция в меню настроек. Я создал PreferenceActivity
чтобы справиться с этим, и я создал preferences.xml
файл, но мне нужно иметь возможность динамически загружать элементы списка в программе. Я знаю, что мне нужно использовать setEntries
а также setEntryValues
методы, чтобы сделать это, но когда я использую эти методы, не выдается никаких исключений, а также заголовок и краткое изложение MultiSelectListPreferenc
показать, но элементы не появляются.
Я проверил, что массивы я использую для заполнения entries
а также entryValues
не пустые, распечатывая их, а также распечатывая результат getEntries()
а также getEntryValues()
после set
они и оба они показывают список участников для заполнения; однако никакие элементы не обнаруживаются.
мой preferences.xml
код:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<MultiSelectListPreference
android:key="markedApps"
android:title="Targeted Apps"
android:summary="Select apps to conditionally disable" />
</PreferenceScreen>
мой AppSettings.java
код:
public class AppSettings extends PreferenceActivity {
public static MultiSelectListPreference blocked;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
blocked = new MultiSelectListPreference(this);
getFragmentManager().beginTransaction().replace(android.R.id.content, new PrefFrag()).commit();
}
public static class PrefFrag extends PreferenceFragment {
@Override
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
MultiSelectListPreference blocked = (MultiSelectListPreference)findPreference("markedApps");
if (blocked == null)
Log.e("NullPointerException", "Blocked is null");
AppSelector.populateAppList();
CharSequence[] appNames = new CharSequence[AppSelector.Data.appNames.size()];
CharSequence[] allApps = new CharSequence[AppSelector.Data.allApps.size()];
int i = 0;
for (String appName : AppSelector.Data.appNames)
appNames[i++] = (CharSequence) appName;
i = 0;
for (String app : AppSelector.Data.allApps)
allApps[i++] = (CharSequence) app;
blocked.setEntries(appNames);
blocked.setEntryValues(allApps);
}
}
}
Заранее благодарю за любую помощь, которую вы оказываете.
1 ответ
Ого, теперь я чувствую себя очень глупо. Оказывается, моя проблема заключалась в том, что я ожидал, что список будет отображаться под заголовком и сводкой, тогда как на самом деле вы должны нажать на заголовок и сводку, чтобы сделать список всплывающим.