Android做法说明(3)---Fragment使用app袋或v4包解析
1)问题简述
相信非常多的朋友在调用Fragment都会遇到以下的情况:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY29kZXJfcGln/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" >
这个时候问题来了...
究竟是用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,可是还是报错,错误信息例如以下:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY29kZXJfcGln/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" >
明明都改了的啊,并且代码也没错误的啊,
后来问了下老大,才知道是布局代码写错了,add方法和replace方法调用后针对的对象是:ViewGroup(容器),就是布局;
就说明是我们在载入fragment的布局文件那里错了,于是乎,打开布局文件:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY29kZXJfcGln/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" >
原来是之前自己用静态方法载入的时候用的是fragment标签,把这个改成一个布局就能够了,比方改成FrameLayout
这个时候执行就没问题了!fragment不是容器!!~
版权声明:本文博主原创文章。博客,未经同意不得转载。