2015年6月7日09:47:12
早晨起来把昨天的NewsFragment小小的Project错误找到了
空指针异常
- 原因:因为之前也遇到这种空指针异常的错误,多数原因都是因为创建了对象或者数组但是没有实例化,只定义了一个对象引用或者是数组引用,然后就去调用对象的方法或者是给数组的元素传递数据了;
- 这里是因为:
- 很多控件定义为了全局变量,但是却没有在方法中进行初始化-参见《Java编程思想-实例化的章节》
- 在给ListView控件绑定对应的Adapter时候,会定义List集合,但是有时候会忘记给List集合进行实例化;比如写一个private List fragments;就去直接调用.add()方法了,一定报错啊
java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
- 是因为 在将布局转换为View时候需要判断是否返回父布局,这里选择false 原因是我忘记写false了,坑爹!也就是说我只写了这个 View iew=View.inflate(R.layout.frag_culture,container);
- View view=View.inflate(R.layout.frag_culture,container,false);
- 之前一直想知道到底怎么才能在Fragment中调用ListView,因为发现有一个问题,就是第一个参数Context的参数的设置,之前在Activity中都是直接Activity.this 就可以,现在到了Fragment中就不知道怎么办了,但是正好又学了Fragment和Activity传递数据,且之前和同学讨论中说到,所有的数据Fragment最后都是会和一个Activity绑定的。。。所以就这样实现了
Implicit super constructor FragmentPagerAdapter() is undefined. Must explicitly invoke another constructor
Call requires API level 11 (current min is 8)
- 需要的API的版本是11,现在是8
- 解决方案:在Manifiest.xml中修改 如下图
The method add(Fragment) in the type List is not applicable for the arguments
- add(Fragment)方法中的参数类型和List 中的参数类型不匹配
- 换句话说如下图所示的 List 中的参数也就是Fragment是android.app.Fragment类型,但是NewsFragment StoryFragment 都是extends android.support.v4包下的Fragment
- 也就是参数类型不匹配,需要将参数类型改成一样的即可,我这里将List 中的Fragment 改成android.support.v4包下的Fragment类型
- 知识点就是Java基础中集合泛型
Binary XML file line : Error inflating class
- 加载布局文件失败
- 解决方案:因为ViewPager实在android.support.v4.view.ViewPager中的,但是我给写成了android.support.v4.app.ViewPager还写成了appp。。。无语,粗心大意,要多看看日志文件
- 可以在 android.support.v4.jar包中寻找到正确的文件全路径 ,一定要写对咯