Como faço para chamar um PreferenceFragment específico de uma PreferenceActivity?
Eu tenho uma PreferenceActivity com vários fragmentos:
R.xml.preferences: (encurtado para melhor legibilidade):
<?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>
ConfiguraçõesAtividade:
public class SettingsActivity extends PreferenceActivity {
@Override
public void onBuildHeaders(List<Header> target) {
loadHeadersFromResource(R.xml.preferences, target);
}
}
Isso mostrará uma entrada da lista comfragments.Fragment1
, fragments.Fragment2
, ... E seSettingsActivity
começou.
Mas agora eu quero passar um Bundle de tal forma que um PreferenceFragment específico seja aberto ao iniciar a atividade:
então eu adicionei isso paraConfiguraçõesAtividade:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState != null && savedInstanceState.getBoolean("shortcut")) {
// directly jump to fragments.Fragment1
}
}
Eu tentei carregar o fragmento viagetFragmentManager().findFragmentById(R.id.fragment1)
, mas isso retornanull
. Mas mesmo se eu tivesse a instância correta, não saberia como invocá-la. Além disso, chamandoloadHeadersFromResource(R.xml.preferences_fragment1, target);
não funciona - Isto irá lançar uma RuntimeException "Documento XML deve começar com tag; foundPreferenceScreen no arquivo XML binário"Não tenho mais idéias e também uma pesquisa sobre SO e Google não retornou nenhum resultado relevante.
Então, minha pergunta é: É possível carregar diretamente um PreferenceFragment (por exemplo, fragments.Fragment1) do método onCreate da Activitiy? Se sim, como?