一:java.lang.RuntimeException: Unable to start activity ComponentInfo: android.view.InflateException: Binary XML file line #14: Error inflating class fragment
出现场景:在项目中,首先加载WelcomeActivity界面,随后加载HomeActivity界面,在activity界面中加载fragment,fragment中又添加了多个fragment,当加载homeActivity主界面后,点击Home键,长时间后activity被系统回收,再次点击时会报此异常,应用崩溃
解决办法:由于时间过久或者开启应用过多,内存不足,系统开始回收应用Activity,这时候重新打开应用,会重新调用加载oncreate,fragment事务会被重新提交,fragemnt反复加载,所以报错;
@Override
public void onSaveInstanceState(Bundle outState,
PersistableBundle outPersistentState) {
super.onSaveInstanceState(outState, outPersistentState);
}
在此方法中保存退出时的状态信息,在oncreate中 if (savedInstanceState == null) {
initView();
}
判断存储数值是否为空,防止反复加载提交事务
二:Caused by: android.view.InflateException: Binary XML file line #14: Error inflating class fragment
出现场景:xml布局文件出错,xml的标签和属性的命名、定义错误,控件Button被写成了ImageView解决办法:找到错误的布局控件声明代码,保持与xml中一致
三:Your project contains error(s),please fix them before running your application
出现场景:项目运行时报错
解决办法:右键项目工程,打开Build Path,选择Configure build path,在Order andExport中取消Android Private Libraries选项,重新运行项目
四:java.lang.IllegalStateException: Fragment already added异常的处理。
出现场景:由一个activity中的fragment向另一个fragment中传值时出现
解决办法:在 Fragment 没有被添加到 FragmentManager 之前,我们可以通过 Fragment.setArguments() 来设置参数,并在 Fragment 中,使用 getArguments() 来取得参数。在 Fragment 被添加到 FragmentManager 后,一旦被使用,我们再次调用 setArguments() 将会导致 java.lang.IllegalStateException: Fragment already active 异常。
解决方法:可以使用setter和getter方法进行数据的存储和获取。
参考:http://stackoverflow.com/questions/10364478/got-exception-fragment-already-active/15084683
(以上是问题的原因)
问题的解决方法参考
三种方式传值1.直接在一个Fragment中调用另外一个Fragment中的方法
但是要保证我们调用的方法是public公开的 showPro(String);
- ContentFragment cf = (ContentFragment) getActivity()
- .getFragmentManager().findFragmentById(
- R.id.content_fg);
- cf.showPro(name);
2.使用接口回调的方法
3.使用广播