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

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

1)问题简述

相信非常多的朋友在调用Fragment都会遇到以下的情况:

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY29kZXJfcGln/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

这个时候问题来了...Android做法说明(3)---Fragment使用app袋或v4包解析

究竟是用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就可以!

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

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

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

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

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

答:仅仅须要把getFragmentManager( )改成getSupportFragmentManager( )就能够了

v4包下fragment遇到的问题临时就这些,以后遇到的话会更新记录的Android做法说明(3)---Fragment使用app袋或v4包解析

假设各位也能够把遇到的问题以及解决方法告诉小猪,分享是程序猿的美德哦!万分感谢!

近期更新:

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

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

getSuppotFragmentManager,可是还是报错,错误信息例如以下:



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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY29kZXJfcGln/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

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

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

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

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

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY29kZXJfcGln/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">



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

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

版权声明:本文博主原创文章。博客,未经同意不得转载。

上一篇:基于最简单的FFmpeg采样读取内存读写:存储转


下一篇:基于最简单的FFmpeg采样读取内存读写:内存玩家