gpt4 book ai didi

java - 在 Android 上使用 Dagger2 进行依赖注入(inject)

转载 作者:行者123 更新时间:2023-11-29 20:46:28 25 4
gpt4 key购买 nike

目前我不喜欢依赖注入(inject),但我想尝试一下。

这是我的:

import android.os.Bundle;
import com.facebook.CallbackManager;
import rx.android.app.RxActivity;

public class ActivityMain2 extends RxActivity {

private CallbackManager callbackManager;

@Override
protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

callbackManager = CallbackManager.Factory.create();
}
}

现在我想注入(inject) Facebook 的 CallbackManager。好的,让我们开始吧。

我创建了很多新类……真的吗?我必须编写更多代码才能让我的开发人员生活更轻松? :-(

import com.facebook.CallbackManager;
import javax.inject.Singleton;
import dagger.Module;
import dagger.Provides;

@Module
public class FacebookModule {

@Provides
@Singleton
CallbackManager provideCallbackManager() {

return CallbackManager.Factory.create();
}
}
import com.facebook.CallbackManager;
import javax.inject.Singleton;
import dagger.Component;

@Singleton
@Component(modules = {FacebookModule.class})
public interface FacebookComponent {

CallbackManager provideCallbackManager();
}

有了这个新类(class),我将 Activity 更改为:

import android.os.Bundle;
import com.facebook.CallbackManager;
import javax.inject.Inject;
import rx.android.app.RxActivity;

public class ActivityMain2 extends RxActivity {

@Inject
CallbackManager callbackManager;

@Override
protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

initializeDependencyInjector();
}

private void initializeDependencyInjector() {

DaggerFacebookComponent.builder()
.facebookModule(new FacebookModule())
.build();
}
}

但它不起作用。 callbackManager 始终为 null。

这是怎么回事?

最佳答案

像这样编辑你的 FacebookComponent:

import com.facebook.CallbackManager;
import javax.inject.Singleton;
import dagger.Component;

@Singleton
@Component(modules = {FacebookModule.class})
public interface FacebookComponent {

public void inject(ActivityMain2 activity);
}

然后是你的 initializeDependencyInjector 方法:

private void initializeDependencyInjector() {

DaggerFacebookComponent.builder()
.facebookModule(new FacebookModule())
.build().inject(this);
}

关于java - 在 Android 上使用 Dagger2 进行依赖注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30262383/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com