8. wrong 2nd argument type found 'android.app.Fragment.' required 'Android.support.v4.app.Fragment'

(转载注明:http://blog.csdn.net/itermeng/article/details/52242658看到好多大牛博客开头都有这个,我也来写一个,嘿嘿~~~


rt,使用fragment的时候报以上错误。

wrong 2nd argument type found
'android.support.v4.app.Fragment.' required 'Android.app.Fragment'

解决了半天!发现错误其实很简单,首要的是解读错误信息:第二个参数类型为android.app.Fragment,要求Android.app.support.v4.Fragment类型(其实就是参数类型错误)



Fragment是界面的一部分,经常被用于滑动界面,可以将多个fragment组合用于一个activity中,它具有生命周期和事件。


Fragment的包为 android.app.Fragment, 但是由于其对3.0下版本不兼容,所以要 引入 android.support.v4.app.Fragment 两个包对Fragment相同方法的定义有所不同,因此在import时,经常容易混淆导致程序报错!!!(以下是我的部分代码)


import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;

import com.gym.zgbj.Fragment.LeftMenuFragment;
import com.gym.zgbj.Fragment.ContentFragment;

 private void initFragment() {
        FragmentManager fm = getSupportFragmentManager();
        FragmentTransaction transaction = fm.beginTransaction();// 开始事务
        transaction.replace(R.id.fl_left_menu, new LeftMenuFragment(),
                TAG_LEFT_MENU);// 用fragment替换帧布局;参1:帧布局容器的id;参2:是要替换的fragment;参3:标记
        transaction.replace(R.id.fl_main, new ContentFragment(), TAG_CONTENT);
        transaction.commit();// 提交事务
        // Fragment fragment =
        // fm.findFragmentByTag(TAG_LEFT_MENU);//根据标记找到对应的fragment
    }
 transaction.replace(R.id.fl_left_menu, new LeftMenuFragment(),
 TAG_LEFT_MENU);


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

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值