Android FindReference()已断开
我有以下首选布局: xml/preferences.xml:Android FindReference()已断开,android,android-layout,android-preferences,Android,Android Layout,Android Preferences,我有以下首选布局: xml/preferences.xml: <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:key="screen_pref"> <!-- Populate with paid preferenc
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:key="screen_pref">
<!-- Populate with paid preferences -->
<PreferenceCategory android:title="Advanced" android:key="cat_pref_mods">
</PreferenceCategory>
<!-- Populate with debugging preferences -->
<PreferenceCategory android:title="Dbg." android:key="cat_pref_dbg">
</PreferenceCategory>
</PreferenceScreen>
但是,在以类似方式填充第二个类别时:
PreferenceCategory mPreferenceCategory = (PreferenceCategory) findPreference("cat_pref_dbg");
PreferenceScreen parentScreen = (PreferenceScreen) findPreference("screen_pref");
// Add category now
parentScreen.addPreference(mPreferenceCategory);
preferences.xml中定义的两个类别标题立即显示为一个
然后将实际首选项连接在一起
为什么带“cat_pref_mods”键的类别及其条目不出现
完全在“cat_pref_dbg”类别之前
调试时,父屏幕似乎为空(“”),即使之前已初始化:
addPreferencesFromResource(R.xml.preferences);
如果只创建了一个类别,则项目将按预期显示。创建两个时,类别标题将立即一个置于另一个之下,但随后条目将按预期显示 事实证明,类别以及首选项必须按顺序添加(以编程方式,作为对象),如下所示:
private void addPreferences() {
addPreferencesFromResource(R.xml.preferences);
PreferenceScreen parentScreen = (PreferenceScreen) findPreference(KEY_PREF_SCREEN);
PreferenceCategory catOne= new PreferenceCategory(this);
catOne.setTitle("Cat. #1");
parentScreen.addPreference(catOne);
addPreferencesFromResource(R.xml.preference_one);
PreferenceCategory catTwo = new PreferenceCategory(this);
catTwo .setTitle("Cat. #2");
parentScreen.addPreference(catTwo);
addPreferencesFromResource(R.xml.preference_two);
}
private void addPreferences() {
addPreferencesFromResource(R.xml.preferences);
PreferenceScreen parentScreen = (PreferenceScreen) findPreference(KEY_PREF_SCREEN);
PreferenceCategory catOne= new PreferenceCategory(this);
catOne.setTitle("Cat. #1");
parentScreen.addPreference(catOne);
addPreferencesFromResource(R.xml.preference_one);
PreferenceCategory catTwo = new PreferenceCategory(this);
catTwo .setTitle("Cat. #2");
parentScreen.addPreference(catTwo);
addPreferencesFromResource(R.xml.preference_two);
}