如何让此语句在 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;
}