我正在尝试将support.v4.app.Fragment添加到PreferenceActivity标头,如下所示:
<header android:fragment="com.example.SupportFragmentSubClass" android:title="Selecting this should show the accompanying fragment" > </header>
这会引发ClassCastException,大概是因为PreferenceActivity期望android.app.Fragment的子类,而不是support.v4.app.Fragment.
我的用例是这样的:
我有非标准片段,我想在< 3.0和> 3.0设备上使用它作为首选项.对于> = 3.0,我需要一个android.app.Fragment子类,因此它可以嵌入到平板电脑设备上的首选项活动的“详细信息窗格”中.对于< 3.0,我需要一个v4.support.app.Fragment子类,所以我可以在其中引入一个ActivityFragment. 有没有一种解决方法可以让我在这种情况下使用兼容性片段?
解决方法
PreferenceFragment不在Android Support包中,您不能以这种方式在PreferenceActivity中使用Android Support包Fragment类.此外,您的标题无论如何都无法在Android 2.x上运行,因为Android 2.x中的PreferenceActivity不知道片段.
原则上,您可以从源代码中派生PreferenceActivity来创建一个使用Android支持版Fragment的PreferenceActivity.
或者,组织您的首选项以在Android 3.0上使用片段并在Android 2.x上避免它们. Here is a sample project我在哪里演示了这样做的方法.