gpt4 book ai didi

java - 注入(inject)后的对象为空

转载 作者:行者123 更新时间:2023-12-02 01:44:00 24 4
gpt4 key购买 nike

我正在尝试将单例对象注入(inject)到 2 个 Activity 中。
我的问题是,@Inject 之后的 Milk 和 Coffee 对象在 Activity 中为 null。在我看来,我错过了一些东西。
请帮助我并告诉我代码中缺少什么

应用程序组件:

@Singleton
@Component(modules = {CoffeeModule.class, MilkModule.class})
public interface AppComponent {

@Component.Builder
interface Builder {
@BindsInstance
Builder appModule(MyMvpApp myMvpApp);

AppComponent build();

}
void inject(MyMvpApp app);
}

咖啡模块:

@Module
public class CoffeeModule {

@Provides
@Singleton
Coffee getCoffee(){
return new Coffee();
}

}

牛奶模块:

@Module
public class MilkModule {

@Provides
@Singleton
Milk getMilk(){
return new Milk();
}

}

我的类(class)应用程序:

public class MyMvpApp extends Application{

@Override
public void onCreate() {
super.onCreate();
initDagger();
}

private void initDagger() {
AppComponent appComponent = DaggerAppComponent.builder()
.appModule(this)
.build();
appComponent.inject(this);
}

}

以及我的 Activity,这些对象为空:

public class LoginActivity extends AppCompatActivity {

@Inject
Milk milk;

@Inject
Coffee coffee;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
Log.i("tag", "" + milk + coffee);
}
}

最佳答案

@Singleton
@Component(modules = {CoffeeModule.class, MilkModule.class})
public interface AppComponent {

void inject(LoginActivity app);

@Component.Builder
interface Builder {
@BindsInstance
Builder appModule(MyMvpApp myMvpApp);

AppComponent build();
}
}



public class LoginActivity extends AppCompatActivity {
@Inject
Milk milk;

@Inject
Coffee coffee;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
DaggerAppComponent.builder().appModule((MyMvpApp) getApplicationContext()).build().inject(this);
Log.i("tag", "" + milk + coffee);
}
}


public class MyMvpApp extends Application {

@Override
public void onCreate() {
super.onCreate();
initDagger();
}

private void initDagger() {
AppComponent appComponent = DaggerAppComponent.builder()
.appModule(this)
.build();
}
}

关于java - 注入(inject)后的对象为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53968820/

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