Android首选项活动IllegalArgumentException:此活动的无效片段

Pet*_*234 8 android preferences android-fragments

我的偏好活动有问题.我创建了偏好屏幕和一个偏好活动.在Android 4.2.2的手机上,它运行正常.但是在使用Android 5.0的Android Emulator上,它崩溃了这个错误:IllegalArgumentException: Invalid fragment for this activity. 这是因为这段代码吗?:

 @Override
    protected boolean isValidFragment(String fragmentName) {
        return MyPreferenceFragment.class.getName().equals(fragmentName);
    }
Run Code Online (Sandbox Code Playgroud)

第二个首选项片段是MyExportPreferenceFragment ...如何将它们与一个活动一起使用?

谢谢你的帮助

//编辑:找到一个解决方案,但也许它太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);
        }
    }
Run Code Online (Sandbox Code Playgroud)

这个可以吗?或者这样做是危险的吗?

Nik*_* G. 25

枚举所有首选片段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);
    }
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

的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>
Run Code Online (Sandbox Code Playgroud)