我具有以下首选项布局:
xml / preferences.xml:
var timeStampString:String = "1438910477"
var t = timeStampString.toLong()
var ts = Timestamp(t, 0)
通过以下代码按预期填充第一类(键为“ cat_pref_mods”):
var t = 1438910477
var ts = Timestamp(t, 0)
但是,当类似地填充第二个类别时:
<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>
preferences.xml中定义的两个类别标题立即显示为一个 彼此之间,然后将实际的首选项连接起来。
为什么不对键“ cat_pref_mods”及其条目进行分类 完全在类别“ cat_pref_dbg”之前?
在调试时,父屏幕似乎是空的(“”),即使先前已初始化:
PreferenceCategory mPreferenceCategory = (PreferenceCategory) findPreference("cat_pref_mods");
PreferenceScreen parentScreen = (PreferenceScreen) findPreference("screen_pref");
// Add category now
parentScreen.addPreference(mPreferenceCategory);
如果仅创建一个类别,则项目将按预期显示。创建两个标题时,类别标题会立即放在另一个标题下,但随后会按预期显示条目。
答案 0 :(得分:0)
事实证明,类别和首选项必须按顺序添加(以编程方式,作为对象),类似于:
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);
}