【问题标题】:Why does Application.getContext() return null? [duplicate]为什么 Application.getContext() 返回 null? [复制]
【发布时间】:2019-11-17 20:12:25
【问题描述】:

您好,我正在实现 SDK,我需要一些代码的上下文,因此,为了访问上下文,我在 Application 类中实现了它:

public class SDKApp extends Application {

    private static SDKApp sdkContext;

    public static Context getContext() {
        return sdkContext;
    }

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

        sdkContext = this;

    }

}

为了对此进行测试,我使用的是 Robolectric,但上下文返回的是空值:

@RunWith(RobolectricTestRunner.class)
public class CallTest {

    private Context context = RuntimeEnvironment.application;

    @Test
    public void emailAuthenticationSuccessfulTest() {
        if (BuildConfig.FLAVOR.equals("dev")) {

            Context context = SDKApp.getContext();

            assertNotNull(context);
        }
    }
}

对此有什么想法?

谢谢

【问题讨论】:

    标签: android android-context android-testing robolectric


    【解决方案1】:

    像这样将你的 SDKApp 类添加到你的清单应用程序标签中

    <application
            android:name="SDKApp" // your complete package path to your SDKApp
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/AppTheme">
    

    【讨论】:

      【解决方案2】:

      确保您的SDKApp 已在AndroidManifest.xml 中注册,例如

      <application
          android:name="SDKApp"
      

      然后你可以调用SDKApp.getContext() 否则你总是从SDKApp.getContext() 得到空值

      谢谢。

      【讨论】:

        猜你喜欢
        • 2017-09-27
        • 1970-01-01
        • 2012-04-14
        • 2017-01-25
        • 2014-07-22
        • 2011-02-07
        • 2013-05-16
        • 2018-04-13
        • 2022-12-26
        相关资源
        最近更新 更多