我上课了
public class DialogUtils
{
private Context context;
@Inject
public DialogUtils(Context context)
{
this.context = context;
}
}
Run Code Online (Sandbox Code Playgroud)
在我的活动类中,我已经做了但是我在dialogUtils实例上得到空指针异常.
public class LoginActivity extends Activity{
@Inject DialogUtils dialogUtils;
}
Run Code Online (Sandbox Code Playgroud)
我知道如何通过模块和组件注入依赖,但不知道如何使用构造注入.任何帮助深表感谢.
如果您不保留活动级组件并且您没有使用组件依赖项或子组件从超级作用域(应用程序级组件)继承,那么它是以下内容
// unscoped
public class DialogUtils {
private final Context context;
@Inject
public DialogUtils(Context context) {
this.context = context;
}
}
Run Code Online (Sandbox Code Playgroud)
然后
@Module
public class ActivityModule {
private final Context context;
public ActivityModule (Context context) {
this.context = context;
}
@Provides //scope is not necessary for parameters stored within the module
public Context context() {
return context;
}
}
@Component(modules={ActivityModule.class})
@Singleton
public interface ActivityComponent {
Context context();
DialogUtils dialogUtils();
void inject(MainActivity mainActivity);
}
Run Code Online (Sandbox Code Playgroud)
进而
@Inject
DialogUtils dialogUtils;
...
ActivityComponent activityComponent = DaggerMainActivityComponent.builder()
.activityModule(new ActivityModule(MainActivity.this))
.build();
activityComponent.inject(this); // activityComponent.dialogUtils() also works
Run Code Online (Sandbox Code Playgroud)