簡體   English   中英

如何在詳細信息PreferenceFragment中加載相同的屏幕首選項

[英]How to load the same screen preference in the detail PreferenceFragment

我正在嘗試做類似Android平板電腦中的設置首選項。

當我單擊“更多”時,右側片段上顯示“無線和網絡”首選項屏幕,而如果我觸摸“VPN”,則在同一片段中打開“VPN”首選項屏幕。

我怎樣才能做到這一點 ?

這是我的偏好xml

<PreferenceScreen android:title="Title A">
        <PreferenceScreen android:title="TITLE B">
            <PreferenceCategory
                android:title="category">
                <ListPreference android:key="list"
                    android:title="list" android:entries="@array/list_vals"
                    android:entryValues="@array/list_vals1"
                    android:defaultValue="1" android:dialogTitle="list title"
                    android:negativeButtonText="cancel" />
            </PreferenceCategory>
        </PreferenceScreen>
</PreferenceScreen>

問題是我不希望在整個屏幕上加載帶有標題B的嵌套首選項屏幕我只想加載到正確的片段...

注意:到目前為止,我使用此文檔創建了我的示例http://developer.android.com/guide/topics/ui/settings.html#PreferenceHeaders

在此輸入圖像描述

在此輸入圖像描述

編輯*

這是我的活動

public class SettingsActivity extends PreferenceActivity {
    @Override
    public void onBuildHeaders(List<Header> target) {
        loadHeadersFromResource(R.xml.preference_headers, target);
    }
}

我沒有布局,所以我怎么知道我的主片段ID是什么,我的細節片段ID是什么?

簡短示例,定義PreferenceActivity ,並為主要類別提供頭文件:

SettingsActivity

public class SettingsActivity extends PreferenceActivity {
    @Override
    public void onBuildHeaders(List<Header> target) {
        super.onBuildHeaders(target);
        loadHeadersFromResource(R.xml.headers,target);
    }
}

文件/res/xml/headers.xml

<?xml version="1.0" encoding="utf-8"?>

<preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
    <header android:title="Preference Header"
        android:fragment="com.example.SettingsDemo.PrefFragment"/>
</preference-headers>

創建一個在上面的android:fragment引用的PreferenceFragment ,提供自己的首選項文件:

class PrefFragment

public class PrefFragment extends PreferenceFragment {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.prefs);
    }
}

文件/res/xml/prefs.xml

<?xml version="1.0" encoding="utf-8"?>

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
 <PreferenceCategory android:title="Preferences">
 <SwitchPreference android:title="Preference" />
    <PreferenceScreen android:title="Sub Preferences"
        android:fragment="com.example.SettingsDemo.SubPrefFragment"/>
 </PreferenceCategory>
</PreferenceScreen>

在上面的android:fragment引用創建一個子PreferenceFragment ,也提供自己的首選項文件:

SubPrefFragment類:

public class SubPrefFragment extends PreferenceFragment {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.sub_prefs);
    }
}

文件/res/xml/sub_prefs.xml

<?xml version="1.0" encoding="utf-8"?>

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
    <PreferenceCategory android:title="Sub Preferences">
        <CheckBoxPreference android:title="Sub Preference"/>
    </PreferenceCategory>
</PreferenceScreen>

而已。 PreferenceActivity將自動顯示所有子片段。

結果:

主要PreferenceFragment 在此輸入圖像描述

替換為子PreferenceFragment ,在相同的標題下: 在此輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM