初次使用Frament发生报错

1. 在报错信息中,发现MainActivity的onCreat被循环调用导致死循环:
	java.lang.RuntimeException: Unable to start activity omponentInfo{com.test/com.nicaicai.MainActivity}: 
	android.view.InflateException: Binary XML file line #14: Error inflating class fragment

仔细检查了N干遍Activity和Fragment的布局XML文件,发现无任何错误之处 疑问


2. 再仔细阅读报错信息,又在一堆执行堆栈信息中找到了这行:

	 Caused by: android.app.Fragment$InstantiationException: Trying to instantiate a class com.nicaicai.main.MainTitleFragment that 


于是顺藤摸瓜在Fragment 类中找到这行,气得差点吐血的代码"
		import android.support.v4.app.Fragment;
这是由Android Studio 2自动生成的 发火在我的代码检查的盲区中

3. 我来详细解释一下吧:
首先,Fragment有两个不同的版本:
android.app.Fragment 的minSdkVersion=11 即Android3.0
android.support.v4.app.Fragment 的minSdkVersion="4" 即Android1.6,而且还需要导入类库包android-support-v4.jar才能用。

第二,我的minSdkVersion=19,所以在运行时XML中的frame标签会被默认成android.app.Fragment,而被继承的Fragment来自import android.support.v4.app.Fragment!

事实就是这样的,import类型是IDE自动生成的处在注意力的盲区,编译和代码检查时也不会报错,而运时Fragment类依照XML信息动态生成UI界面,就会出现类型不匹配继而报错!而且还是隐藏在其他错误之后的错误!

最后,希望这篇文章能为看到它的人节约2个小时的时间和精神抑郁,我现在鼻息有点酸了,谢谢大家的观看。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值