Fragment用app包还是v4包解析

转自:http://blog.csdn.net/zc0908/article/details/50721553

1)问题简述

相信很多的朋友在调用Fragment都会遇到下面的情况:

这个时候问题来了...

到底是用Android.app下的Fragment还是用的android.support.v4.app包下的Fragment?

答:其实都可以,没错,都可以!!!我们都知道Fragment是3.0(API 11)后引入的

那么如果开发的app需要在3.0以下的版本运行呢?比如还有一点点市场份额的2.3!

于是乎,v4包就这样应运而生了,而最低可以兼容到1.6版本!

至于使用哪个包看你的需求了,现在3.0下手机市场份额其实已经不多了,随街都是

4.0以上的,所以这个时候,你可以直接使用app包下的Fragment,然后调用相关的方法

通常都是不会有什么问题的;如果你Fragment用了app包的,FragmentManager和FragmentTransaction

都需要是app包的

要么用全部用app,要么全部用v4,不然可是会报错的哦!

当然如果你要自己的app对于低版本的手机也兼容的话,那么就可以选择用v4包

但是使用v4包很多要注意的地方!

2)使用v4包要注意的事项:

①如果你使用了v4包下的Fragment,那么所在的那个Activity就要继承FragmentActivity哦!

案例:今天在xml文件中静态地载入fragment,然后重写了Fragment,但是在加载Activity的时候就报错了,

大概的提示就是Fragment错误还是找不到什么的,name属性改了几次还是错!最后才发现是用了

v4的包的缘故,只需让自己的Activity改成FragmentActivity即可!

②今天写这句代码的时候竟然用不了,错误情况如下:

有点莫名其妙啊,Fragment,FragmentManager,FragmentTransaction都是用的v4包啊,

Activity也是继承FragmentActivity的啊?都改成app包就可以了,但是这不和我们用v4包的

前提冲突了么?其实也是有解决方法的哈?

答:只需要把getFragmentManager( )改成getSupportFragmentManager( )就可以了

v4包下fragment遇到的问题暂时就这些,以后遇到的话会更新记录的

如果各位也可以把遇到的问题以及解决方法告诉小猪,分享是程序员的美德哦!万分感谢!

最近更新:

2014.11.14今天遇到一个很逗比的问题哈,是关于动态载入Fragment的

包都用的v4包,Fragment也继承了FragmentActivity,获取FragmentManager也用了

getSuppotFragmentManager,但是还是报错,错误信息如下:

明明都改了的啊,而且代码也没错误的啊,

后来问了下老大,才知道是布局代码写错了,add方法和replace方法调用后针对的对象是:ViewGroup(容器),就是布局;

就说明是我们在加载fragment的布局文件那里错了,于是乎,打开布局文件:

原来是之前自己用静态方法加载的时候用的是fragment标签,把这个改成一个布局就可以了,比如改成FrameLayout

这个时候运行就没问题了!fragment不是容器!!~

时间: 2024-07-30 02:08:48

Fragment用app包还是v4包解析的相关文章

Android做法说明(3)---Fragment使用app袋或v4包解析

Android做法说明(3)---Fragment使用app袋或v4包解析 1)问题简述 相信非常多的朋友在调用Fragment都会遇到以下的情况: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY29kZXJfcGln/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" > 这个时候问题来了... 究竟是用android.app下的Fragmen

Android实习札记(3)---Fragment用app包还是v4包解析

Android实习札记(3)---Fragment用app包还是v4包解析 1)问题简述 相信很多的朋友在调用Fragment都会遇到下面的情况: 这个时候问题来了... 到底是用android.app下的Fragment还是用的android.support.v4.app包下的Fragment? 答:其实都可以,没错,都可以!!!我们都知道Fragment是3.0(API 11)后引入的 那么如果开发的app需要在3.0以下的版本运行呢?比如还有一点点市场份额的2.3! 于是乎,v4包就这样应

关于app.FragmentManager和v4包的FragmentPagerAdapter冲突

这几天发现一个问题我用getFragmentManager()得到FragmentManager不能放到FragmentPagerAdapter里面去.因为FragmentPagerAdapter里面构造参数必须是v4包下的FragmentManager,而我activty里面getFragmentManager得到是app包下的FragmentManager 有次产生冲突 一般解决办法就是不是继承activity而是继承fragmentactivity ..可我就是不想我就要actvity.因

app包中的fragment和v4包中的fragment的使用的区别

1.错误:The method replace(int, Fragment) in the type FragmentTransaction is not applicable for the arguments (int, MyFragment) http://www.cnblogs.com/1114250779boke/p/3867494.html 其实主要问题是getSupportFragmentManager(),而不是使用getFragmentManager 2.app包中的fragm

关于v4包的Fragment过渡动画的事件监听无响应问题解决

项目中部分功能模块采用了单Activity+多Fragment模式,当Fragment切换时,需要在过渡动画执行完后做一些操作,通常就是在自己封装的FragmentBase中重写onCreateAnimation方法,创建一个Animation对象,并添加动画的事件监听.而最近升级了v4包后,突然发现添加的动画事件监听无响应了.通过查看源码,发现在v4包中关于Fragment管理类FragmentManagerImpl中,在获取Animation对象后,也添加了对动画的监听事件,也就覆盖了我自己

Android v4包中的 SwipeRefreshLayout 官方的下拉刷新组件

SwipeRefreshLayout在v4包下,对应的v4Demo中也有相应的例子.如果没有请下载最新support-v4 SwipeRefreshLayout 只能有一个直接子View,可能是一个ListView或一个Layout或其他需要刷新的组件. setOnRefreshListener 用于监听刷新的动作.SwipeRefreshLayout 下拉,就会有刷新的效果出来,触发该监听. 如果需要一个刷新的动画,setRefreshing(true), 停: setRefreshing(f

兔子--Android Support v4包丢失的解决的方法

在开发中,Android Support v4包丢失的解决的方法: Project->properties->Java Build Path->Libraries->Add External Jars 中增加sdk文件夹下的extras/android/support/v4/android-support-v4.jar (假设找不到,则须要用sdk manager下载android support package)

兔子--Android Support v4包丢失的解决办法

在开发中,Android Support v4包丢失的解决办法: Project->properties->Java Build Path->Libraries->Add External Jars 中加入sdk目录下的extras/android/support/v4/android-support-v4.jar (如果找不到,则需要用sdk manager下载android support package)

使用v4包或者其他第三方包的注意事项

v4包等第三方jar包,编译的时候使用,也就是调用他的类和api是不报错的,也有提示 但是导出的时候是默认没有导出的,所以一运行就要报错,会报某些类或者方法找不到的错等等. build path这里要配置一下,默认是没有打钩,所以要自己打钩上才能导出去