您的位置:首页 > 编程语言 > Java开发

java.lang.IncompatibleClassChangeError

2017-12-28 13:57 2546 查看
java.lang.IncompatibleClassChangeError:
The method 'com.ckw.zfsoft.ckwapparchitecture.modules.secondmodule.CupFragment
com.ckw.zfsoft.ckwapparchitecture.modules.secondmodule.CupFragment.newInstance()'
was expected to be of type static but instead was found to be of type virtual
(declaration of 'com.ckw.zfsoft.ckwapparchitecture.home.HomeActivity' appears in
/data/app/com.ckw.zfsoft.ckwapparchitecture-2/split_lib_slice_6_apk.apk)


发生错误的场景:

项目里使用了MVP+Dagger2,在实例化Fragment的时候,我还是使用了原本的实例方法:

public static HeartFragment newInstance() {

Bundle args = new Bundle();

HeartFragment fragment = new HeartFragment();
fragment.setArguments(args);
return fragment;
}


在Activity中使用:

mHeartFragment = HeartFragment.newInstance();


然后就出现了上述的错误。

解决方法:

不适用newInstance方法,而应该采用依赖注入的方式:

首先在Fragment所在的ActivityModule中:

@FragmentScoped
@ContributesAndroidInjector
abstract HeartFragment heartFragment();


接着在Activity中注入这个Fragment:

@Inject
HeartFragment getHeartF
4000
ragment;


最后在需要使用的地方:

mHeartFragment = getHeartFragment;


最后不要忘了将Fragment中通过快捷键生成的newInstance方法代码删除!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐