2017-08-17 1 views
0

Wie kann ich Pass Aktivität Kontext zu Anwendungsklasse Ich erhalte die folgenden Fehler, wenn ich getApplicationContext passieren()Pass Aktivität Kontext auf die Anwendungsklasse statt Context

      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

Fehler im Zusammenhang mit 'Theme' nicht Kontext. – Piyush

Antwort

0

Fehler nicht wegen Zusammenhang ist es weil Sie appCompact Thema zu Ihrer Tätigkeit in einem offenkundig

so etwas wie diese

<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> 
zuweisen
0

Sie müssen Aktivitätskontext anstelle von Anwendungskontext für bestimmte fensterbezogene Komponenten verwenden. Beispielsweise können Sie den Anwendungskontext für das Dialogfeld "Warnung" nicht verwenden, da es sich um eine bestimmte Fensterkomponente handelt und das Motiv und andere Eigenschaften der Aktivität verwendet werden.

Kontext vs Anwendungskontext

Sie sind beide Instanzen von Context, aber die Anwendungsinstanz ist auf den Lebenszyklus der Anwendung gebunden, während die Aktivität Instanz auf den Lebenszyklus einer Aktivität gebunden ist . So haben sie Zugriff auf verschiedene Informationen über die Anwendungsumgebung.

Wenn Sie die Dokumentation bei getApplicationContext lesen, beachten Sie, dass Sie nur verwenden sollten, wenn Sie einen Kontext benötigen, dessen Lebenszyklus von dem aktuellen Kontext getrennt ist. Dies gilt nicht für jedes Ihrer Beispiele.

Der Aktivitätskontext enthält vermutlich Informationen über die aktuelle Aktivität , die zum Abschließen dieser Aufrufe erforderlich ist. Wenn Sie die genaue Fehlermeldung anzeigen, kann möglicherweise zeigen, was genau es benötigt.

Aber im Allgemeinen, verwenden Sie den Kontext der Aktivität, es sei denn, Sie haben einen guten Grund nicht zu.

Also, wenn Sie ein beliebiges Fenster spezifischen Inhalt oder Thema bezogene Inhalte mit Anwendungskontext verwenden wird es diesen Fehler werfen.

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

Hoffe, es hilft :)

+0

Markieren Sie es als akzeptierte Antwort, wenn es Ihnen wirklich geholfen hat. Es wird anderen @ Anbu helfen –

Verwandte Themen