android.app.FragmentManager 与 android.support.v4.app.FragmentManager带来的若干Error
2015-07-10 18:12
513 查看
Fragment是activity的界面中的一部分或一种行为。你可以把多个Fragment们组合到一个activity中来创建一个多面界面并且你可以在多个activity中重用一个Fragment。你可以把Fragment认为模块化的一段activity,它具有自己的生命周期,接收它自己的事件,并可以在activity运行时被添加或删除。
一个好的帖子:http://my.oschina.net/u/270164/blog/85347。
使用Fragment的包为android.app.FragmentManager,但是由于其对3.0下版本不兼容,所以要 引入android.support.v4.app.FragmentManager 两个包对Fragment相同方法的定义有所不同,因此在import时,经常容易混淆导致程序报错,下面就来总结下:
1、编译无错误,运行时报错:android.view.InflateException: Binary XML file line #7:
Error inflating class fragment
出现了上述错误,原因往往是你在某个.xml文件使用了<fragment>标签,但对应的xx.java文件中import的却是android.support.v4.app.Fragment。android.support.v4.app.Fragment:可以兼容到1.6的版本,不能使用<fragment>标签,需要在程序中通过add或者replace的方式添加。
2、编译错误:
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
public class MainActivity extends FragmentActivity {
public static FragmentManager childFm;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
childFm=getSupportFragmentManager();
FragmentTransaction ft=childFm.beginTransaction();
Frag1 f1=new Frag1();
ft.add(f1,"第一").commit();
代码如上,在add处提示:The
method add(Fragment, String) in thetype FragmentTransaction is not applicable for the arguments (Frag1, String)。
原因:我的Frag1.java中,import的包是 android.app.Fragment所以报错。改成import android.support.v4.app.Fragment;就好了。
3、此外,在调用Activity时,包为 android.support.v4.app.FragmentActivity的类,都extends的是FragmentActivity而不是Activity。
一个好的帖子:http://my.oschina.net/u/270164/blog/85347。
使用Fragment的包为android.app.FragmentManager,但是由于其对3.0下版本不兼容,所以要 引入android.support.v4.app.FragmentManager 两个包对Fragment相同方法的定义有所不同,因此在import时,经常容易混淆导致程序报错,下面就来总结下:
1、编译无错误,运行时报错:android.view.InflateException: Binary XML file line #7:
Error inflating class fragment
出现了上述错误,原因往往是你在某个.xml文件使用了<fragment>标签,但对应的xx.java文件中import的却是android.support.v4.app.Fragment。android.support.v4.app.Fragment:可以兼容到1.6的版本,不能使用<fragment>标签,需要在程序中通过add或者replace的方式添加。
2、编译错误:
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
public class MainActivity extends FragmentActivity {
public static FragmentManager childFm;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
childFm=getSupportFragmentManager();
FragmentTransaction ft=childFm.beginTransaction();
Frag1 f1=new Frag1();
ft.add(f1,"第一").commit();
代码如上,在add处提示:The
method add(Fragment, String) in thetype FragmentTransaction is not applicable for the arguments (Frag1, String)。
原因:我的Frag1.java中,import的包是 android.app.Fragment所以报错。改成import android.support.v4.app.Fragment;就好了。
3、此外,在调用Activity时,包为 android.support.v4.app.FragmentActivity的类,都extends的是FragmentActivity而不是Activity。
相关文章推荐
- android service是否在同一个内存的问题
- Android 实现对话框圆角功能
- Unity3d热更新全书-加载(一)从AssetBundle说起
- Android安全输入设计与思考
- Android自定义横向的ProgressBar
- Android中Js与java的交互
- Android对象序列化存储
- Android JNI 获取应用程序签名
- Android APP内存优化之图片优化 ,不错的文章
- iOS中多线程原理与runloop介绍
- Android_selector、shape
- Android学习系列(40)--Android主题和样式之系统篇
- Unity3D学习(视频教程)
- Android Support ;v4、v7、v13的区别
- android开发类似coverflow效果的3d旋转
- Swift开发--Storyboard的使用教程
- 关于coco2d-X Android 打包问题
- swift 动态设置UILabel的高度
- unity 项目build 的时候后报错An asset is marked with HideFlags.DontSave but is included in the build:
- Android将TextView中的文字替换为一个小图片的方法