Java Dagger 2 Android如何在运行时传递值?

Java 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,

所以我一直在学习Dagger2Android,但我遇到了问题。我想在运行时传递值。我读过很多博客等,但找不到任何解决方案。每个匕首来源都是关于匕首2而不是匕首2安卓。在Dagger2Android上也有这样的功能吗?或者我应该直接转到Dagger2吗

这是AppComponent.java

@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”),我该怎么做呢?我解决了二传手的问题,但我不能每次都像那样解决这个问题