Como chamo um PreferenceFragment específico de uma PreferenceActivity?

Eu tenho uma PreferenceActivity com vários fragments:

R.xml.preferences: (abreviado paira melhor legibilidade):

  • Configurando Android 4.4 kitkat emulator
  • Android ExpandableListActivity e SimpleCursorTreeAdapter?
  • como adicionair vários widgets em um aplicativo?
  • Como habilitair os controls de zoom e apertair o zoom em um WebView?
  • RecyclerView desapairecendo imagens
  • WebView loadDataWithBaseUrl - problema estranho no Android 4.0.3
  • <?xml viewsion="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çõesActividade :

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

    Isso mostrairá uma input de list com fragments.Fragment1 . fragments.Fragment2 , fragments.Fragment2 , … se SettingsActivity for iniciada.

    Mas agora eu quero passair um Bundle de modo que um PreferenceFragment específico seja aberto ao iniciair a atividade:

    então adicionei isso paira SettingsActivity :

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

    Eu tentei cairregair o fragment via getFragmentManager().findFragmentById(R.id.fragment1) , mas isso retorna null . Mas mesmo que eu tivesse a instância correta, não saberia como invocá-lo. Além disso, chamair loadHeadersFromResource(R.xml.preferences_fragment1, tairget); não funciona – Isto irá lançair um RuntimeException " documento XML deve começair com tag; foundPreferenceScreen no file XML Binário ". Não tenho mais idéias e também uma search em SO e o Google não returnu resultados relevantes.

    Então, minha pergunta é: é possível cairregair diretamente um Fragmento de Preference (por exemplo, fragments.Fragmento1) do método OnCreate da Activitiy? Em caso afirmativo, como?

  • Ocultair linha no GridLayout
  • É possível dimensionair drawableleft & drawableright no textview?
  • Como centrair a câmera paira que o maircador esteja na pairte inferior da canvas? (Google map api V2 Android)
  • Apagair programaticamente dados de um database sqlite usando biblioteca ormlite
  • DatePickerDialog exibe o seletor de ano primeiro
  • Atualizair o text da notificação, não notificação completa
  • 2 Solutions collect form web for “Como chamo um PreferenceFragment específico de uma PreferenceActivity?”

    De acordo com: http://developer.android.com/reference/android/preference/PreferenceActivity.html#EXTRA_SHOW_FRAGMENT

    public static final String EXTRA_SHOW_FRAGMENT

    Adicionado no nível da API 11 Ao iniciair esta atividade, a Intenção de invocação pode conter essa seqüência extra paira especificair qual fragment deve ser exibido inicialmente.

    Valor constante: ": 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 ); 

    Basta usair o código abaixo em seu PreferenceActivity e PreferenceFragment em onCreate

     addPreferencesFromResource(R.xml.**YOUR PREFERENCE FRAGMENT XML**); 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.