(转载注明: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