首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >嵌套的preferences.xml

嵌套的preferences.xml
EN

Stack Overflow用户
提问于 2011-03-16 00:11:37
回答 4查看 7.3K关注 0票数 34

是否可以将一个preferences.xml包含到另一个中,就像使用<include />标记的布局一样?

比方说:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen 
    xmlns:android="http://schemas.android.com/apk/res/android">
    <PreferenceScreen 
        android:title="@string/pref_group_title_visual">
        <include 
            preferences_filename="xml/pref_visual"/>
    </PreferenceScreen>
...
EN

回答 4

Stack Overflow用户

发布于 2011-12-02 20:44:57

这里的解决方案是从PreferencesActivity中膨胀这两个首选项文件。例如:

代码语言:javascript
复制
    addPreferencesFromResource(R.xml.options);
    addPreferencesFromResource(R.xml.additional_options);
票数 27
EN

Stack Overflow用户

发布于 2012-05-08 08:40:11

解决方案灵魂展示了它的工作。它可以扩展为仅显示首选项,如果您是使用应用程序的未签名版本的开发人员;)

代码语言:javascript
复制
addPreferencesFromResource(R.xml.options);
addPreferencesFromResource(R.xml.additional_options);
if (BuildConfig.DEBUG) {
    addPreferencesFromResource(R.xml.developer_options);
}

我创建了一篇关于这个问题的博客文章,并有一个完整的工作代码示例可供下载。http://androidfu.blogspot.com/2012/05/developer-debug-with-nested-preferences.html

票数 16
EN

Stack Overflow用户

发布于 2013-12-28 03:43:12

要真正实现嵌套效果,您可以使用此技术将加载的首选项重新定位到已加载的组。

代码语言:javascript
复制
PreferenceCategory notifications = (PreferenceCategory) getPreferenceScreen ().findPreference (PreferenceKey.pref_notifications.name ());
addPreferencesFromResource (R.xml.pref_notifications, notifications);

其中,增强型addPreferencesFromResource定义为:

代码语言:javascript
复制
private void addPreferencesFromResource (int id, PreferenceGroup newParent) {
    PreferenceScreen screen = getPreferenceScreen ();
    int last = screen.getPreferenceCount ();
    addPreferencesFromResource (id);
    while (screen.getPreferenceCount () > last) {
        Preference p = screen.getPreference (last);
        screen.removePreference (p); // decreases the preference count
        newParent.addPreference (p);
    }
}

它适用于任何PreferenceGroup,如PreferenceScreen和PreferenceCategory。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5314582

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档