无法在Java Android中使用dagger2在片段中注入依赖项
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了无法在Java Android中使用dagger2在片段中注入依赖项,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2567字,纯文字阅读大概需要4分钟。
内容图文
我能够在活动及其工作中注入依赖性.但是在片段中调用相同的依赖项不会获得访问权限.
这就是我所做的.
应用程式Java
public class App extends MultiDexApplication implements HasActivityInjector, HasFragmentInjector {
@Inject
DispatchingAndroidInjector<Activity> activityInjector;
@Inject
DispatchingAndroidInjector<Fragment> fragmentInjector;
private AppComponent mComponent;
@Override
public void onCreate() {
super.onCreate();
mComponent = DaggerAppComponent.builder().application(this).build();
mComponent.inject(this);
}
@Override
public DispatchingAndroidInjector<Activity> activityInjector() {
return activityInjector;
}
@Override
public AndroidInjector<Fragment> fragmentInjector() {
return fragmentInjector;
}
}
这是AppComponent.Java
@Singleton
@Component(modules = { AndroidInjectionModule.class, ActivityModule.class, FragmentModule.class})
public interface AppComponent extends AndroidInjector<App> {
void inject(App app);
@Component.Builder
interface Builder {
@BindsInstance
Builder application(Application application);
AppComponent build();
}
}
这是ActivityModule.Java类
@Module
public abstract class ActivityModule {
@ContributesAndroidInjector
abstract MainActivity contributeMainActivityInjector();
@ContributesAndroidInjector
abstract MyActivity contributeCampaignActivityInjector();
}
这是FragmentModule.java类
@Module
public abstract class FragmentModule {
@ContributesAndroidInjector
abstract MyFragment bindMyFragment();
}
现在在MyFragment类中,我想在其中注入该依赖项.在顶部,我将这些行添加到类中
@Inject
ImageDownloaderApi imageDownloaderApi;
然后检查onCreateView函数,我这样做是为了检查我的依赖项是否像这样工作
boolean injected = imageDownloaderApi == null ? false : true;
Log.d(this.getClass().getSimpleName(), "Dependency worked: "+ String.valueOf(injected));
每次都使我感到虚假.
同样的代码在activites中起作用的地方.
我在活动中要做的另一件事是像这样在onCreate下方添加此行
@Override
protected void onCreate(Bundle savedInstanceState) {
AndroidInjection.inject(this); // this line
super.onCreate(savedInstanceState);
在尝试在片段中的onCreateView中添加同一行时
AndroidInjection.inject(this);
它在此下方显示红线.如果我用getActivity替换它.它给了我运行时错误.
请看看并指导我错了吗?
我为片段执行的过程是否正确?因为它显然在活动中起作用.
在此先感谢您的时间.
解决方法:
我假设您正在使用支持库中的Fragment-s.尝试更改公共类App扩展MultiDexApplication实现HasActivityInjector,HasFragmentInjector到公共类App扩展MultiDexApplication实现HasActivityInjector,HasFragmentInjector,HasSupportFragmentInjector,随后提供适当的注射器.
This is an easy article使该主题更清晰.另外,此处还描述了HasSupportFragmentInjector接口的用法.
内容总结
以上是互联网集市为您收集整理的无法在Java Android中使用dagger2在片段中注入依赖项全部内容,希望文章能够帮你解决无法在Java Android中使用dagger2在片段中注入依赖项所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。