2017-08-17 37 views
0

如何我可以通過活動上下文來應用類,我提示以下錯誤:當我通過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

回答

0

錯誤是不是因爲上下文是因爲你需要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> 
0

對於特定的窗口相關組件,您必須使用活動上下文而不是應用程序上下文。例如,您不能使用應用程序上下文進行警報對話框,因爲它是特定的窗口組件,並且它使用活動的主題和其他屬性。

語境VS應用程序上下文

他們是上下文的兩個實例,但應用程序實例 依賴於應用程序的生命週期,而活動實例 被綁定到活動的生命週期。因此,他們可以訪問關於應用程序環境的不同信息。

如果您在getApplicationContext閱讀文檔也指出,如果你需要它的生命週期是從 當前上下文分開的情況下,你應該 只能用這個。這不適用於你的任何一個例子。

活動上下文大概有關於完成這些調用所必需的當前 活動的一些信息。如果顯示 確切的錯誤消息,可能能夠指出它究竟需要什麼。

但一般來說,使用活動上下文,除非你有一個很好的理由 不。

所以如果你使用任何窗口具體的內容或主題相關的內容與應用上下文它會拋出這個錯誤。

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

希望它能幫助:)相關`Theme`沒有上下文

+0

將它標記爲接受的答案,如果它真的幫助了你。它會幫助其他人@安埠 –

相關問題