2016-01-06 2 views
4

J'ai un problème avec mon activité de préférence. J'ai créé des écrans de préférence et une activité de préférence. Sur mon téléphone avec Android 4.2.2 cela fonctionne très bien. Mais sur Android Emulator avec Android 5.0, il se bloque avec cette erreur: IllegalArgumentException: Invalid fragment for this activity. Est-ce à cause de ce code ?:Activité de préférence Android IllegalArgumentException: Fragment non valide pour cette activité

@Override 
    protected boolean isValidFragment(String fragmentName) { 
     return MyPreferenceFragment.class.getName().equals(fragmentName); 
    } 

Le deuxième fragment de préférence serait MyExportPreferenceFragment ... Comment puis-je utiliser les deux avec une activité?

Merci pour votre aide

// EDIT: trouvé une solution, mais peut-être il est trop hacky ^^

@Override 
    protected boolean isValidFragment(String fragmentName) { 
     if(MyPreferenceFragment.class.getName().equals(fragmentName)) { 
      return MyPreferenceFragment.class.getName().equals(fragmentName); 
     } 
     else { 
      return MyExportPreferenceFragment.class.getName().equals(fragmentName); 
     } 
    } 

Est-ce bien? Ou est-ce dangereux de le faire comme ça?

Répondre

17

Énumérer tous les fragments de préférence dans isValidFragment

MySettingsActivity.class

@Override 
    protected boolean isValidFragment(String fragmentName) { 
     return Fragment1.class.getName().equals(fragmentName) || 
       Fragment2.class.getName().equals(fragmentName) || 
       Fragment3.class.getName().equals(fragmentName) || 
       Fragment4.class.getName().equals(fragmentName) || 
       Fragment5.class.getName().equals(fragmentName); 
    } 

Headers.xml

<preference-headers xmlns:android="http://schemas.android.com/apk/res/android"> 
    <header 
     android:title="@string/one" 
     android:summary="@string/one_sum" 
     android:fragment="com.***.fragment1" /> 
</preference-headers> 

preferences.xml

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> 
    <PreferenceCategory android:title="@string/category_basic"> 
     <PreferenceScreen 
     android:icon="@drawable/ic_three" 
     android:fragment="com.***.fragment3" 
     android:title="@string/text" 
     android:summary="@string/text_sum" 
     android:key="@string/key" /> 
    </PreferenceCategory> 
</PreferenceScreen>