Как мне вызвать конкретный фрагмент PreferenceFragment из PreferenceActivity?
У меня есть 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>
SettingsActivity:
public class SettingsActivity extends PreferenceActivity {
@Override
public void onBuildHeaders(List<Header> target) {
loadHeadersFromResource(R.xml.preferences, target);
}
}
Это покажет запись списка сfragments.Fragment1
, fragments.Fragment2
, ... еслиSettingsActivity
запущен
Но теперь я хочу передать Bundle таким образом, чтобы при запуске действия открывался определенный 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)
, но это возвращаетnull
, Но даже если бы у меня был правильный экземпляр, я бы не знал, как его вызвать. Также звонюloadHeadersFromResource(R.xml.preferences_fragment1, target);
не работает - это вызовет исключение RuntimeExceptionXML-документ должен начинаться с тега; foundPreferenceScreen в двоичном XML-файле"У меня нет идей, а также поиск по SO и Google не дал никаких релевантных результатов.
Итак, мой вопрос: возможно ли напрямую загрузить PreferenceFragment (например, fragments.Fragment1) из метода onCreate Activitiy? Если да, то как?