,这题目起的够骚情了,原创傲慢的上校哦,转载请标明:http://blog.csdn.net/aomandeshangxiao/article/details/7753421

其实有些方法也是从网上找来的,拿来主义,共同分享下(Fragment其他资料:android之Fragment(官网资料翻译))。

第一个错误:FragmentManagerImpl.saveFragmentBasicState

下面是log:

E/AndroidRuntime(29923): FATAL EXCEPTION: main
E/AndroidRuntime(29923): java.lang.NullPointerException
E/AndroidRuntime(29923):     at android.app.FragmentManagerImpl.saveFragmentBasicState(FragmentManager.java:1544)
E/AndroidRuntime(29923):     at android.app.FragmentManagerImpl.saveAllState(FragmentManager.java:1574)
E/AndroidRuntime(29923):     at android.app.Activity.onSaveInstanceState(Activity.java:1213)
E/AndroidRuntime(29923):     at android.app.Activity.performSaveInstanceState(Activity.java:1162)
E/AndroidRuntime(29923):     at android.app.Instrumentation.callActivityOnSaveInstanceState(Instrumentation.java:1287)
E/AndroidRuntime(29923):     at android.app.ActivityThread.performStopActivityInner(ActivityThread.java:3208)
E/AndroidRuntime(29923):     at android.app.ActivityThread.handleStopActivity(ActivityThread.java:3266)
E/AndroidRuntime(29923):     at android.app.ActivityThread.access$900(ActivityThread.java:139)
E/AndroidRuntime(29923):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1279)
E/AndroidRuntime(29923):     at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(29923):     at android.os.Looper.loop(Looper.java:156)
E/AndroidRuntime(29923):     at android.app.ActivityThread.main(ActivityThread.java:5005)
E/AndroidRuntime(29923):     at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(29923):     at java.lang.reflect.Method.invoke(Method.java:511)
E/AndroidRuntime(29923):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
E/AndroidRuntime(29923):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
E/AndroidRuntime(29923):     at dalvik.system.NativeStart.main(Native Method)

看老半天log,没有琢磨明白,在网上找了下,说出现这个问题,主要是以下两个因素:

       一是用了android.support.v4包,

       二是FragmentActivity.

本人正是在从Fragment跳转到另一个Activity时候报的错,据说是个官方Bug,已经有程序员把这个问题提交到官方了, https://android-review.googlesource.com/#/c/31261/。

下面看看他们提交的内容:

If a fragment's saved view state is null and the user visible hint is true then the `result` bundle will have
never been initialized to a value resulting in a `NullPointerException`.

如果一个Fragment保存的视图状态为Null并且用户可见提示为true,那么'result' bundle(要保存的Bundle)会有一个微博初始化的值,然后导致空指针异常。

如何解决此问题呢?问题出在Save上,在有Fragment的Activity中重写onSaveInstanceState()方法,并且注释掉super.onSaveInstanceState(),这样就不会调用父类的onSaveInstanceState(outState)方法了,就不会报异常了。

outState 对象为空..在onSaveInstanceState()函数中不使用到outState即可.[java] view plaincopy
@Override  protected void onSaveInstanceState(Bundle outState) {  // TODO Auto-generated method stub   //super.onSaveInstanceState(outState);  }  

第二个、使用ListFragment:java.lang.RuntimeException: Content has view with id attribute 'android.R.id.list' that is not a ListView class

在ListFragment中,想当然的以为,像其他Fragment一样:

public class ListFragmentTest extends ListFragment {@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {View root = inflater.inflate(R.layout.list, null);return root;}

在list.xml里面:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical" ><TextView android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/app_name"/><ListView android:id="@+id/list"android:layout_width="fill_parent"android:layout_height="fill_parent"></ListView>
</LinearLayout>

看下log:

07-16 15:43:22.026: E/AndroidRuntime(605): FATAL EXCEPTION: main
07-16 15:43:22.026: E/AndroidRuntime(605): java.lang.RuntimeException: Unable to start activity ComponentInfo{cn.demo/cn.demo.FragmentTestActivity}: android.view.InflateException: Binary XML file line #23: Error inflating class fragment
07-16 15:43:22.026: E/AndroidRuntime(605):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
07-16 15:43:22.026: E/AndroidRuntime(605):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
07-16 15:43:22.026: E/AndroidRuntime(605):  at android.app.ActivityThread.access$600(ActivityThread.java:123)
07-16 15:43:22.026: E/AndroidRuntime(605):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
07-16 15:43:22.026: E/AndroidRuntime(605):  at android.os.Handler.dispatchMessage(Handler.java:99)
07-16 15:43:22.026: E/AndroidRuntime(605):  at android.os.Looper.loop(Looper.java:137)
07-16 15:43:22.026: E/AndroidRuntime(605):  at android.app.ActivityThread.main(ActivityThread.java:4424)
07-16 15:43:22.026: E/AndroidRuntime(605):  at java.lang.reflect.Method.invokeNative(Native Method)
07-16 15:43:22.026: E/AndroidRuntime(605):  at java.lang.reflect.Method.invoke(Method.java:511)
07-16 15:43:22.026: E/AndroidRuntime(605):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
07-16 15:43:22.026: E/AndroidRuntime(605):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
07-16 15:43:22.026: E/AndroidRuntime(605):  at dalvik.system.NativeStart.main(Native Method)
07-16 15:43:22.026: E/AndroidRuntime(605): Caused by: android.view.InflateException: Binary XML file line #23: Error inflating class fragment
07-16 15:43:22.026: E/AndroidRuntime(605):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:697)
07-16 15:43:22.026: E/AndroidRuntime(605):  at android.view.LayoutInflater.rInflate(LayoutInflater.java:739)
07-16 15:43:22.026: E/AndroidRuntime(605):  at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
07-16 15:43:22.026: E/AndroidRuntime(605):  at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
07-16 15:43:22.026: E/AndroidRuntime(605):  at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
07-16 15:43:22.026: E/AndroidRuntime(605):  at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:251)
07-16 15:43:22.026: E/AndroidRuntime(605):  at android.app.Activity.setContentView(Activity.java:1835)
07-16 15:43:22.026: E/AndroidRuntime(605):  at cn.demo.FragmentTestActivity.onCreate(FragmentTestActivity.java:11)
07-16 15:43:22.026: E/AndroidRuntime(605):  at android.app.Activity.performCreate(Activity.java:4465)
07-16 15:43:22.026: E/AndroidRuntime(605):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
07-16 15:43:22.026: E/AndroidRuntime(605):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
07-16 15:43:22.026: E/AndroidRuntime(605):  ... 11 more
07-16 15:43:22.026: E/AndroidRuntime(605): Caused by: java.lang.RuntimeException: Content has view with id attribute 'android.R.id.list' that is not a ListView class
07-16 15:43:22.026: E/AndroidRuntime(605):  at android.app.ListFragment.ensureList(ListFragment.java:402)
07-16 15:43:22.026: E/AndroidRuntime(605):  at android.app.ListFragment.onViewCreated(ListFragment.java:203)
07-16 15:43:22.026: E/AndroidRuntime(605):  at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:811)
07-16 15:43:22.026: E/AndroidRuntime(605):  at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1010)
07-16 15:43:22.026: E/AndroidRuntime(605):  at android.app.FragmentManagerImpl.addFragment(FragmentManager.java:1108)
07-16 15:43:22.026: E/AndroidRuntime(605):  at android.app.Activity.onCreateView(Activity.java:4243)
07-16 15:43:22.026: E/AndroidRuntime(605):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:673)
07-16 15:43:22.026: E/AndroidRuntime(605):  ... 21 more

为什么呢?因为ListFragment里面已经提供了系统自带的ListView,这样写,当然出错。可以直接不重写OnCreatView方法,使用getListView()获取系统提供的ListView,但是获取的ListView设置Item间隔线只能getListView().setDivider(divider),其参数为Drawable类型。当然如果只想简单的设置下Divider的颜色呢?

其实ListFragment当然运行自定义布局,但是Listview要用系统的:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical" ><TextView android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/app_name"/><ListView android:id="@id/android:list"android:layout_width="fill_parent"android:layout_height="fill_parent"></ListView>
</LinearLayout>

在这里,就可以方便的设置listview的各个参数了。

那些年,在Fragment中犯的错相关推荐

  1. Fragment 中使用 getLayoutInflater() 的问题

    问题: 我想在一个Fragment的ListView中显示我的搜索结果 但在这里报错: LayoutInflater inflater = getLayoutInflater(); "The ...

  2. go 向buff写入一个字节_我在 Go 中犯的 5 个错误

    人皆犯错,宽恕是德 - Alexander Pope 这些都是我在写 Go 中犯的错误.尽管这些可能不会导致任何类型的错误,但它们可能会潜在地影响软件.   内循环   有几种方法可以造成循环内部的混 ...

  3. java程序员第二语言_惊呆了!Java程序员最常犯的错竟然是这10个

    和绝大多数的程序员一样,我也非常的宅.周末最奢侈的享受就是逛一逛技术型网站,比如说 programcreek,这个小网站上有一些非常有意思的主题.比如说:Java 程序员最常犯的错竟然是这 10 个, ...

  4. 小程序设计避免犯什么错_新设计师犯下的5种印刷错误以及如何避免

    小程序设计避免犯什么错 Over the last year and a half, I've had the opportunity to teach the basics of typograph ...

  5. 惊呆了!Java程序员最常犯的错竟然是这10个

    和绝大多数的程序员一样,我也非常的宅.周末最奢侈的享受就是逛一逛技术型网站,比如说 programcreek,这个小网站上有一些非常有意思的主题.比如说:Java 程序员最常犯的错竟然是这 10 个, ...

  6. 赛门铁克新通告仍犯旧错 再次忽视大陆用户

    赛门铁克新通告仍犯旧错 再次忽视大陆用户[@more@] 赛门铁克中国分公司上周末通告,在周六.日增加热线服务时间.但是对于赔偿问题仍旧没有表态.同时记者发现,该通告部分文字使用的是繁体,在简体中文问 ...

  7. TCP粘包:我只是犯了每个数据包都会犯的错 |硬核图解

    事情从一个健身教练说起吧. 李东,自称亚健康终结者,尝试使用互联网+的模式拓展自己的业务.在某款新开发的聊天软件琛琛上发布广告. 键盘说来就来.疯狂发送"李东",回车发送!,&qu ...

  8. 天大的鼻子都会犯的错

    哎! 名人么,说话做事也不小心点-- ------ 成龙18日在博鳌亚洲论坛上,被问及对文化自由看法,快人快语的他不改直言个性,忍不住表示,现在自己对于到底自由好,还是不自由好感到很矛盾,因为太自由了 ...

  9. Android多层嵌套Fragment中调用系统相机拍照以及裁剪的相关问题解决

    多层嵌套Fragment中调用系统相机拍照.裁剪 最近公司项目有频繁使用相机拍照的需求,然后频繁的实际使用过程中遇到很多大大小小的坑,在此记录下. (ps.关于一些拍照后图片旋转.裁剪设置返回数据为t ...

最新文章

  1. (转)使用 Spring缓存抽象 支持 EhCache 和 Redis 混合部署
  2. 产生BFC环境的几种方式
  3. 第三次Python作业———林东
  4. CStringArray序列化处理
  5. 三层聚合实验的注意事项
  6. APL平台对C++开发者的价值和作用
  7. Qt creator5.7 OpenCV249之中值滤波(含源码下载)
  8. 苹果2024年推出真全面屏iPhone 但可能只是高端版
  9. 国产平板面临变局挑战,谁能撑起民族大旗?
  10. vb mysql 实例_VB与数据库的交互经典例子总结
  11. 服务器虚拟化分步实施,服务器虚拟化解决实施方案.doc
  12. ArcGIS——地理配准操作
  13. 用Regedit命令控制注册表
  14. clang: error:clang frontend command failed due to signal
  15. vue端口号被占用报错npm ERR! @1.0.0 dev: `node build/dev-server.js`
  16. 机器学习在信息安全领域的应用现状和畅想
  17. 深度解析大数据在公安领域的应用
  18. 如何实现一款好用的云图(word-cloud)生成工具?
  19. 《牧羊少年奇幻之旅》读后感
  20. w jius shui yix

热门文章

  1. tlias 教学过程_构建科学的“教学评价体系”,传智专修学院拉近教师与学生的距离...
  2. 联想电脑计算机无法正常启动怎么办,电脑蓝屏无法启动怎么办
  3. 8个 Chatbot 框架介绍
  4. GTK帮助文档的使用
  5. C++中的dynamic_cast和static_cast转化
  6. Python基础——继承、多态
  7. Java配置环境变量(Windows)
  8. js jsp 文件是什么?
  9. 已知ip地址求子网掩码
  10. 《分布式与云计算》课程笔记——2.2 Distributed Systems:P2P