Error:(26, 117) 错误: 不兼容的类型: Fragment无法转换为NewsContentFragment 解决方法

在用Android Studio 编写碎片程序的时候出现了以下错误:


这里写图片描述
图1
碎片程序如下:

这里写图片描述
图2
在下面程序调用时类型转换出错

这里写图片描述
图3
刚开始以为代码哪里写错了,对着书本仔细检查了好多遍,还是没找出哪里出错了。回过头来再看错误提示信息,说是类型转换错误,更是摸不到头脑,自己明明是继承了Fragment类,怎么会出错。突然想起来书中好像有说继承Fragment类有两种方式,会不会在这出了问题。果然是这样。当继承Fragment时,会有两个不同包下的Fragment供我们选择, 一个是系统内置的android.app.Fragment,一个是support-v4库中的android.support.v4.app.Fragment,但是建议使用后者,因为它可以让碎片在所有Android系统版本中保持功能一致性。我们并不需要在build.gradle文件中添加support-v4库依赖,因为build.gradle文件中已经添加appcompat-v7库的依赖,而这个库会将support-v4库也一起引入进来。
我程序中Fragment是继承自android.app.Fragment的,在下面的语句中我使用了getSupportFragmentManager()这个方法,
NewsContentFragment newsContentFragment = (NewsContentFragment) getSupportFragmentManager().findFragmentById(R.id.news_content_fragment);
显然这个方法是对应android.support.v4.app.Fragment包的,不出错才怪。
终上所述,有两个方法可以解决这个问题:
1、将图3代码中getSupportFragmentManager()方法改为android.app.Fragment对应的getFragmentManager()
2、将图2代码顶部的import android.app.Fragment改为import android.support.v4.app.Fragment
强烈建议采用第二种方法来保证程序的兼容性。

  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值