gpt4 book ai didi

android - 如何在细节PreferenceFragment中加载相同的屏幕首选项

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:17:35 24 4
gpt4 key购买 nike

我正在尝试做一些类似于平板电脑的 android 中的设置首选项。

当我单击“更多”时,“无线和网络”首选项屏幕会显示在右侧 fragment 中,如果我触摸“VPN”,则在同一 fragment 中会打开“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 的嵌套首选项屏幕我只想加载到正确 fragment 的位置...

注意:到目前为止,我使用此文档来创建示例 http://developer.android.com/guide/topics/ui/settings.html#PreferenceHeaders

enter image description here

enter image description here

编辑*

这是我的 Activity

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

我没有布局,那么我怎么知道我的主 fragment ID 和详细 fragment 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>

创建一个 PreferenceFragment,如上面的 android:fragment 所引用,提供它自己的首选项文件:

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>

创建一个子 PreferenceFragment,如上面 android:fragment 中所引用的,也提供它自己的首选项文件:

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 将自动显示所有子 fragment 。

结果:

主要 PreferenceFragment : enter image description here

替换为 sub PreferenceFragment ,在同一标题下: enter image description here

关于android - 如何在细节PreferenceFragment中加载相同的屏幕首选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14706319/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com