传递活动上下文的应用类,而不是语境

问题描述:

如何我可以通过活动上下文来应用类,我提示以下错误:当我通过getApplicationContext()传递活动上下文的应用类,而不是语境

      at android.os.Handler.handleCallback(Handler.java:751) 
                    at android.os.Handler.dispatchMessage(Handler.java:95) 
                    at android.os.Looper.loop(Looper.java:154) 
                    at android.app.ActivityThread.main(ActivityThread.java:6121) 
                    at java.lang.reflect.Method.invoke(Native Method) 
                    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889) 
                    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779) 
                    Caused by: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity. 
                    at android.support.v7.app.AppCompatDelegateImplV9.createSubDecor(AppCompatDelegateImplV9.java:359) 
                    at android.support.v7.app.AppCompatDelegateImplV9.ensureSubDecor(AppCompatDelegateImplV9.java:328) 
                    at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:289) 
                    at android.support.v7.app.AppCompatDialog.setContentView(AppCompatDialog.java:83) 
                    at 
+0

错误。 – Piyush

错误是不是因为上下文是因为你需要appCompact主题分配给您的活动清单

像这样

<activity 
      android:name="com.pareekshum.sociallogin.SocialLoginActivity" 
      android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation" 
      android:screenOrientation="portrait" 
      android:theme="@style/AppThemeNew" /> 




<style name="AppThemeNew" parent="Theme.AppCompat.Light.NoActionBar"> 
    <item name="colorPrimary">@color/colorPrimary</item> 
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
    <item name="colorAccent">@color/actionbarbackground</item> 
    <item name="actionBarStyle">@style/ThemeOverlay.AppCompat.Dark.ActionBar</item> 
</style> 

对于特定的窗口相关组件,您必须使用活动上下文而不是应用程序上下文。例如,您不能使用应用程序上下文进行警报对话框,因为它是特定的窗口组件,并且它使用活动的主题和其他属性。

语境VS应用程序上下文

他们是上下文的两个实例,但应用程序实例 依赖于应用程序的生命周期,而活动实例 被绑定到活动的生命周期。因此,他们可以访问关于应用程序环境的不同信息。

如果您在getApplicationContext阅读文档也指出,如果你需要它的生命周期是从 当前上下文分开的情况下,你应该 只能用这个。这不适用于你的任何一个例子。

活动上下文大概有关于完成这些调用所必需的当前 活动的一些信息。如果显示 确切的错误消息,可能能够指出它究竟需要什么。

但一般来说,使用活动上下文,除非你有一个很好的理由 不。

所以如果你使用任何窗口具体的内容或主题相关的内容与应用上下文它会抛出这个错误。

Caused by: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity. 

希望它能帮助:)相关`Theme`没有上下文

+0

将它标记为接受的答案,如果它真的帮助了你。它会帮助其他人@安埠 –