2016-01-06 57 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>