MultiSelectListPreference setEntries 未显示
MultiSelectListPreference setEntries doesn't show up
我正在尝试构建一个 android 应用程序,我需要在设置菜单中有一个 MultiSelectListPreference
选项。我创建了一个 PreferenceActivity
来处理这个问题,我还创建了一个 preferences.xml
文件,但我需要能够在程序中动态加载列表元素。我知道我需要使用 setEntries
和 setEntryValues
方法来执行此操作,但是当我使用这些方法时,不会抛出异常并且会显示 MultiSelectListPreferenc
的标题和摘要,但不会元素出现。
我已经通过打印出来验证我用来填充 entries
和 entryValues
的数组不为空,以及打印出 getEntries()
和 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);
}
}
}
提前感谢您提供的任何帮助。
哇,所以我现在觉得非常愚蠢。原来我的问题是我希望列表显示在标题和摘要下方,而实际上您必须单击标题和摘要才能弹出列表。
我正在尝试构建一个 android 应用程序,我需要在设置菜单中有一个 MultiSelectListPreference
选项。我创建了一个 PreferenceActivity
来处理这个问题,我还创建了一个 preferences.xml
文件,但我需要能够在程序中动态加载列表元素。我知道我需要使用 setEntries
和 setEntryValues
方法来执行此操作,但是当我使用这些方法时,不会抛出异常并且会显示 MultiSelectListPreferenc
的标题和摘要,但不会元素出现。
我已经通过打印出来验证我用来填充 entries
和 entryValues
的数组不为空,以及打印出 getEntries()
和 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);
}
}
}
提前感谢您提供的任何帮助。
哇,所以我现在觉得非常愚蠢。原来我的问题是我希望列表显示在标题和摘要下方,而实际上您必须单击标题和摘要才能弹出列表。