Anroid studio遇到的问题8---wrong 2nd argument type found 'android.app.Fragment.' required 'Android.suppo
来源:互联网 发布:国税总局网络培训学院 编辑:程序博客网 时间:2024/06/07 06:38
8. wrong 2nd argument type found 'android.app.Fragment.' required 'Android.support.v4.app.Fragment'
rt,使用fragment的时候报以上错误。
<code class="hljs ocaml has-numbering">wrong <span class="hljs-number">2</span>nd argument <span class="hljs-class"><span class="hljs-keyword">type</span> <span class="hljs-title">found</span></span><span class="hljs-string">'android.support.v4.app.Fragment.'</span> required <span class="hljs-string">'Android.app.Fragment'</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li></ul>
解决了半天!发现错误其实很简单,首要的是解读错误信息:第二个参数类型为android.app.Fragment,要求Android.app.support.v4.Fragment类型(其实就是参数类型错误)
Fragment是界面的一部分,经常被用于滑动界面,可以将多个fragment组合用于一个activity中,它具有生命周期和事件。
Fragment的包为 android.app.Fragment, 但是由于其对3.0下版本不兼容,所以要 引入 android.support.v4.app.Fragment 两个包对Fragment相同方法的定义有所不同,因此在import时,经常容易混淆导致程序报错!!!(以下是我的部分代码)
<code class="hljs avrasm has-numbering">import android<span class="hljs-preprocessor">.support</span><span class="hljs-preprocessor">.v</span>4<span class="hljs-preprocessor">.app</span><span class="hljs-preprocessor">.FragmentManager</span><span class="hljs-comment">;</span>import android<span class="hljs-preprocessor">.support</span><span class="hljs-preprocessor">.v</span>4<span class="hljs-preprocessor">.app</span><span class="hljs-preprocessor">.FragmentTransaction</span><span class="hljs-comment">;</span>import <span class="hljs-keyword">com</span><span class="hljs-preprocessor">.gym</span><span class="hljs-preprocessor">.zgbj</span><span class="hljs-preprocessor">.Fragment</span><span class="hljs-preprocessor">.LeftMenuFragment</span><span class="hljs-comment">;</span>import <span class="hljs-keyword">com</span><span class="hljs-preprocessor">.gym</span><span class="hljs-preprocessor">.zgbj</span><span class="hljs-preprocessor">.Fragment</span><span class="hljs-preprocessor">.ContentFragment</span><span class="hljs-comment">;</span> private void initFragment() { FragmentManager fm = getSupportFragmentManager()<span class="hljs-comment">;</span> FragmentTransaction transaction = fm<span class="hljs-preprocessor">.beginTransaction</span>()<span class="hljs-comment">;// 开始事务</span> transaction<span class="hljs-preprocessor">.replace</span>(R<span class="hljs-preprocessor">.id</span><span class="hljs-preprocessor">.fl</span>_left_menu, new LeftMenuFragment(), TAG_LEFT_MENU)<span class="hljs-comment">;// 用fragment替换帧布局;参1:帧布局容器的id;参2:是要替换的fragment;参3:标记</span> transaction<span class="hljs-preprocessor">.replace</span>(R<span class="hljs-preprocessor">.id</span><span class="hljs-preprocessor">.fl</span>_main, new ContentFragment(), TAG_CONTENT)<span class="hljs-comment">;</span> transaction<span class="hljs-preprocessor">.commit</span>()<span class="hljs-comment">;// 提交事务</span> // Fragment fragment = // fm<span class="hljs-preprocessor">.findFragmentByTag</span>(TAG_LEFT_MENU)<span class="hljs-comment">;//根据标记找到对应的fragment</span> }</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li></ul>
<code class="hljs avrasm has-numbering"> transaction<span class="hljs-preprocessor">.replace</span>(R<span class="hljs-preprocessor">.id</span><span class="hljs-preprocessor">.fl</span>_left_menu, new LeftMenuFragment(), TAG_LEFT_MENU)<span class="hljs-comment">;</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li></ul>
在transaction.replace这一条语句报了错!其实看以上代码并发现不了错误,我导入的是android.support.v4.app包,而且在获取FragmentManager 使用的也是getSupportFragmentManager函数。一步步推理,
最终发现是LeftMenuFragment继承的Fragment,导入的是Android.app.Fragment包!
所以错误还是导错包!!!!!!!(泪奔)
总结
1.如果你导入的是Android.app.Fragment’包(即本地的jar包) import android.app.Fragment;
那么在获得FragmentManager时,使用的应该是 FragmentManager fm = getFragmentManager();
,对应的fragment也要导入对应的包!
2.如果你导入的是android.support.v4.app.Fragment.包(即v4包)import android.support.v4.app.Fragment;
那么在获得FragmentManager时,使用的应该是 FragmentManager fm = getSupportFragmentManager();
对应的fragment也要导入对应的包!
一定要注意你所继承的fragment,导入的是哪个包!
这个讲解了fragment,学习学习
http://blog.csdn.net/qq_16444837/article/details/48183877
- Anroid studio遇到的问题8---wrong 2nd argument type found 'android.app.Fragment.' required 'Android.suppo
- 8. wrong 2nd argument type found 'android.app.Fragment.' required 'Android.support.v4.app.Fragment'
- Android studio Fragment底部布局出现的错误 Wrong 2nd argument type. Found: 'com.example.nata.qq2.Fragment1', r
- Wrong 2nd argument type.Found:'javalang.Class<com.dxc.leap.raas.uipath.model.JobModel>',required:'j
- required 'Android.support.v4.app.Fragment' found 'android.app.Fragment.'错误解决
- Android Studio真机测试中遇到的问题:Error running app:No target device found.
- Anroid studio遇到的问题4---Gradle DSL method not found runProguard
- Anroid studio遇到的问题3---INSTALL_FAILED_UPDATE_INCOMPATIBLE
- Android Studio遇到的问题:Your CPU does not support required features (VT-x or SVM)
- Android Studio遇到的问题
- Android studio 遇到的问题
- Android studio 遇到的问题
- android studio遇到的问题。
- Android Studio遇到的问题
- android studio遇到的问题
- android studio 遇到的问题
- Android Studio遇到的问题
- Android Studio 遇到的问题
- eclipse的基本配置
- android app架构设计mvc
- x.utiles的使用介绍
- 光照设置
- Linux下tftp和nfs配置
- Anroid studio遇到的问题8---wrong 2nd argument type found 'android.app.Fragment.' required 'Android.suppo
- anluar--如何使用controller
- CSDN-markdown编辑器语法
- Oracle高级查询
- 树状数组详解
- 二、八、十、十六进制转换
- List-ConvertView原理
- MyBatis中select条件配置
- CSS3 新特性实例