Java Dagger 2 Android如何在运行时传递值?
所以我一直在学习Dagger2Android,但我遇到了问题。我想在运行时传递值。我读过很多博客等,但找不到任何解决方案。每个匕首来源都是关于匕首2而不是匕首2安卓。在Dagger2Android上也有这样的功能吗?或者我应该直接转到Dagger2吗 这是AppComponent.javaJava Dagger 2 Android如何在运行时传递值?,java,android,dependency-injection,dagger-2,Java,Android,Dependency Injection,Dagger 2,所以我一直在学习Dagger2Android,但我遇到了问题。我想在运行时传递值。我读过很多博客等,但找不到任何解决方案。每个匕首来源都是关于匕首2而不是匕首2安卓。在Dagger2Android上也有这样的功能吗?或者我应该直接转到Dagger2吗 这是AppComponent.java @Singleton @Component( modules = { AndroidSupportInjectionModule.class,
@Singleton
@Component(
modules = {
AndroidSupportInjectionModule.class,
ActivityBuildersModule.class,
AppModule.class,
}
)
public interface AppComponent extends AndroidInjector<BaseApplication> {
@Component.Builder
interface Builder{
@BindsInstance
Builder application(Application application);
AppComponent build();
}
}
这是AuthModule.java
@Module
public abstract class ActivityBuildersModule {
//For injection class
@AuthScope
@ContributesAndroidInjector(
modules = {
AuthModule.class,
InjectFragmentBuildersModule.class, //Only gonna exist on AuthActivity Scope
MainViewModelsModule.class,
})
abstract AuthActivity contributeAuthActivity();
}
@Module
public class AuthModule {
//SubComponent
@AuthScope
@Provides
static Tiers getTiers(){
return new Tiers();
}
@AuthScope
@Provides
static Engine getEngine(){
return new Engine();
}
@AuthScope
@Provides
static Car getCar(Tiers tiers, Engine engine, @Named("String1")String string){
return new Car(tiers,engine,string);
}
@AuthScope
@Provides
static FragmentManager getFragmentManager(AuthActivity authActivity){
return authActivity.getSupportFragmentManager();
}
}
最后是AuthActivity.java
public class AuthActivity extends DaggerAppCompatActivity {
private static final String TAG = "AuthActivity";
@Inject
Car car;
@Inject
@Named("String1")
String test1;
@Inject
@Named("String2")
String test2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_auth);
car.startCar();
car.setmBrand("new test brand");
NavController navController= Navigation.findNavController(this,R.id.nav_host_fragment);
navController.navigate(R.id.injectFragment);
}
}
假设我想把一些字符串传递给Car,而不是@Named(“String1”),我该怎么做呢?我解决了二传手的问题,但我不能每次都像那样解决这个问题