繁体   English   中英

MultiSelectListPreference setEntries未显示

[英]MultiSelectListPreference setEntries doesn't show up

我正在尝试构建一个Android应用,并且我需要在设置菜单中使用MultiSelectListPreference选项。 我创建了一个PreferenceActivity来处理此问题,还创建了一个preferences.xml文件,但是我需要能够在程序中动态加载列表元素。 我知道我需要使用setEntriessetEntryValues方法来执行此操作,但是当我使用这些方法时,不会引发任何异常,并且MultiSelectListPreferenc的标题和摘要会显示,但不会出现任何元素。

我已经验证了我用来填充entriesentryValues的数组entryValues为空, entryValues是将它们打印出来,以及在set完它们后打印出getEntries()getEntryValues()的结果,并且这两个都将条目列表显示为被填充; 但是没有元素出现。

我的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);

        }
    }
}

预先感谢您提供的任何帮助。

哇,所以我现在感觉非常愚蠢。 原来我的问题是我希望列表显示在标题和摘要下,而实际上您必须单击标题和摘要才能弹出列表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM