gpt4 book ai didi

android - 如何从 PreferenceActivity 调用特定的 PreferenceFragment?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:50:41 24 4
gpt4 key购买 nike

我有一个包含多个 fragment 的 PreferenceActivity:

R.xml.preferences:(为了更好的可读性而缩短):

<?xml version="1.0" encoding="utf-8"?>
<preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
<header android:fragment="fragments.Fragment1" android:id="@+id/fragment1" [...] />
<header android:fragment="fragments.Fragment2" android:id="@+id/fragment2" [...] />
[...]
</preference-headers>

设置 Activity :

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

如果 SettingsActivity 启动,这将显示包含 fragments.Fragment1fragments.Fragment2 的列表条目。

但现在我想传递一个 Bundle,以便在启动 Activity 时打开一个特定的 PreferenceFragment:

所以我将其添加到SettingsActivity:

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState != null && savedInstanceState.getBoolean("shortcut")) {
// directly jump to fragments.Fragment1
}
}

我尝试通过 getFragmentManager().findFragmentById(R.id.fragment1) 加载 fragment ,但这返回了 null。但即使我有正确的实例,我也不知道如何调用它。此外,调用 loadHeadersFromResource(R.xml.preferences_fragment1, target); 不起作用 - 这将抛出 RuntimeException“XML 文档必须以标记开头;在二进制 XML 文件中找到 PreferenceScreen ”。我没有任何想法,而且在 SO 和 Google 上搜索也没有返回任何相关结果。

所以我的问题是:是否可以从 Activitiy 的 onCreate 方法中直接加载 PreferenceFragment(例如 fragments.Fragment1)?如果是,怎么办?

最佳答案

根据: http://developer.android.com/reference/android/preference/PreferenceActivity.html#EXTRA_SHOW_FRAGMENT

public static final String EXTRA_SHOW_FRAGMENT

Added in API level 11 When starting this activity, the invoking Intent can contain this extra string to specify which fragment should be initially displayed.

Constant Value: ":android:show_fragment"

intent = new Intent( this, SettingsActivity.class );
intent.putExtra( PreferenceActivity.EXTRA_SHOW_FRAGMENT, Fragment1.class.getName() );
intent.putExtra( PreferenceActivity.EXTRA_NO_HEADERS, true );

关于android - 如何从 PreferenceActivity 调用特定的 PreferenceFragment?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13672487/

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