微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Android:support.v4.app.Fragment – > Fragment classcastexception的解决方法?

我正在尝试将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我在哪里演示了这样做的方法.

原文地址:https://www.jb51.cc/android/310263.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐