2016-01-06 64 views
4

我的偏好活動存在問題。 我已創建到首選項屏幕和一個首選項活動。 在我的手機與Android 4.2.2它工作正常。 但在Android模擬器與Android 5.0也與此錯誤崩潰:IllegalArgumentException: Invalid fragment for this activity. 這是因爲這個代碼?:Android偏好活動IllegalArgumentException:此活動的片段無效

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

第二偏好片段將MyExportPreferenceFragment ...... 我如何使用這兩者與一項活動?

感謝您的幫助

//編輯:找到了解決辦法,但也許是太哈克^^

@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); 
     } 
    } 

這樣行嗎?或者這樣做會危險嗎?

回答

17

枚舉所有偏好在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>