如何让此语句在 Non Activity 类 中工作?
How do I get this statement to work in Non Activity Classes?
我需要这条语句来激活 dep。注射....
((App) getApplication()).inject(this);
//or in fragment
((App) getActivity().getApplication()).inject(this);
此语句在 Activities 和 Fragments and Services 中运行良好,但如何使此语句在基于 non-activity/fragment/service 的 类 中运行?
您可以将上下文从 activity 或片段传递到非 Activity Class,替代解决方案是您可以使用应用程序上下文。比如定义一个函数
getContext()
在您的应用程序中调用并从中调用 return 应用程序上下文。
您使用的是什么依赖注入框架?看起来它可能是 dagger,在这种情况下,您可以只使用带有 @Inject
注释的构造函数,并像这样通过它传递依赖项(其中 Foo 是您的 class 和栏是依赖项):
private final Bar mBar;
@Inject
public Foo(Bar bar) {
mBar = bar;
}
在您的模块中,您需要像这样的东西:
@Provides
public Foo providesFoo(Foo foo) {
return foo;
}
如果您没有使用 dagger(即使您使用了),我建议您在应用程序中创建一个静态方法 class 来获取实例你的应用程序以避免转换它,并允许它可以从你的应用程序中的任何地方访问(尽管我个人只在 Activities/Fragments/Services/etc 中调用它)。我使用这样的东西:
private static App sInstance;
public static App getInstance() {
return sInstance;
}
@Overrride
public void onCreate() {
super.onCreate();
sInstance = this;
}
我需要这条语句来激活 dep。注射....
((App) getApplication()).inject(this);
//or in fragment
((App) getActivity().getApplication()).inject(this);
此语句在 Activities 和 Fragments and Services 中运行良好,但如何使此语句在基于 non-activity/fragment/service 的 类 中运行?
您可以将上下文从 activity 或片段传递到非 Activity Class,替代解决方案是您可以使用应用程序上下文。比如定义一个函数
getContext()
在您的应用程序中调用并从中调用 return 应用程序上下文。
您使用的是什么依赖注入框架?看起来它可能是 dagger,在这种情况下,您可以只使用带有 @Inject
注释的构造函数,并像这样通过它传递依赖项(其中 Foo 是您的 class 和栏是依赖项):
private final Bar mBar;
@Inject
public Foo(Bar bar) {
mBar = bar;
}
在您的模块中,您需要像这样的东西:
@Provides
public Foo providesFoo(Foo foo) {
return foo;
}
如果您没有使用 dagger(即使您使用了),我建议您在应用程序中创建一个静态方法 class 来获取实例你的应用程序以避免转换它,并允许它可以从你的应用程序中的任何地方访问(尽管我个人只在 Activities/Fragments/Services/etc 中调用它)。我使用这样的东西:
private static App sInstance;
public static App getInstance() {
return sInstance;
}
@Overrride
public void onCreate() {
super.onCreate();
sInstance = this;
}