25

Ich bekomme den folgenden Fehler und ich habe keine Ahnung, warum es passiert.Aktivität rief nicht beenden? (API 23)

Fehler:

08-23 17:07:46.533 22454-22454/com.a.b.c E/AndroidRuntime﹕ FATAL EXCEPTION: main 
    Process: com.a.b.c, PID: 22454 
    java.lang.RuntimeException: Unable to resume activity {com.a.b.c/com.a.b.c.MainActivity}: java.lang.IllegalStateException: Activity {com.a.b.c/com.a.b.c.MainActivity} did not call finish() prior to onResume() completing 
      at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3103) 
      at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3134) 
      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2481) 
      at android.app.ActivityThread.-wrap11(ActivityThread.java) 
      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
      at android.os.Handler.dispatchMessage(Handler.java:102) 
      at android.os.Looper.loop(Looper.java:148) 
      at android.app.ActivityThread.main(ActivityThread.java:5417) 
      at java.lang.reflect.Method.invoke(Native Method) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
    Caused by: java.lang.IllegalStateException: Activity {com.a.b.c/com.a.b.c.MainActivity} did not call finish() prior to onResume() completing 
      at android.app.Activity.performResume(Activity.java:6324) 
      at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3092) 
            at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3134) 
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2481) 
            at android.app.ActivityThread.-wrap11(ActivityThread.java) 
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
            at android.os.Handler.dispatchMessage(Handler.java:102) 
            at android.os.Looper.loop(Looper.java:148) 
            at android.app.ActivityThread.main(ActivityThread.java:5417) 
            at java.lang.reflect.Method.invoke(Native Method) 
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 

Code:

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    System.out.println("Started"); 
} 

Ich versuche, den Code auf einem AVD mit Android 6.0 (API 23) zu laufen, arbeitet auf API 22.

+1

bitte, zeigen Sie mir Ihre Onresume und Onfinish-Methode – iGio90

+0

Ich habe die onResume/onFinish Methoden nicht überschrieben. Ich habe OnCreate nur wie oben gezeigt verwendet. – sudoman

+2

entfernen (Android: theme = "@ android: style/Theme.NoDisplay") aus dem Android-Manifest hat es funktioniert, aber ich brauche das in meiner Anwendung, so brauche ich eine Abhilfe. – sudoman

Antwort

16

Dies ist ein Fehler in der Android M-Entwicklervorschau. More details

+1

1. defekter Link 2. Dies scheint eine beabsichtigte Verhaltensänderung ab api 23 zu sein, kein Fehler, unten können Antworten helfen, und diesen Beitrag zusammenzufassen: https://commonsware.com/blog/2015/ 11/02/psa-android-6p0-theme.nodisplay-regression.html – marmor

+0

Link behoben. Dies ist ein Fehler, der von Google-Entwicklern erkannt wurde. –

+0

@Malwinder Der Fehler wurde bereits behoben? – iYonatan

12

Ich habe einen Workaround gefunden. Rufen Sie setVisible(true) in onStart():

@Override 
protected void onStart() { 
    super.onStart(); 
    setVisible(true); 
} 
+0

hat für mich funktioniert, danke! –

+1

Das funktioniert nicht, zumindest ab Android 6.0 final. Ich bekomme immer noch die gleiche Ausnahme wie in der Frage zitiert. – CommonsWare

+0

@CommonsWare, klingt wie sie es in der endgültigen Version behoben. Der Fix arbeitete im offiziellen Emulator vor der offiziellen Version 6. Danke für die Information. – Sam

16

ich das gleiche Problem habe, den gleichen Absturz mit der

did not call finish() prior to onResume() completing 

Fehlermeldung. Also habe ich die v23 \ styles.xml

<style name="AppTheme" parent="android:Theme.Translucent"> 
... 
</style> 

während die normale styles.xml

hat
<style name="AppTheme" parent="android:Theme.NoDisplay"> 
... 
</style> 

Es funktioniert gut, stürzt nicht mehr ab. Allerdings weiß ich nicht, wie gut diese Lösung, 23 Theme.Translucent in API zu verwenden, zumal es defined als

Theme for translucent activities (on API level 10 and lower).

ist wirklich, dass ich hoffe, dass sie diesen Fehler zu beheben.

+8

Ich empfehle 'Theme.Translucent.NoTitleBar'. Andernfalls erhalten Sie eine Titelleiste im alten Stil, die auf dem Bildschirm schwebt. Ansonsten hat diese Technik für mich funktioniert - vielen Dank! – CommonsWare

+2

Es sieht so aus, als wäre das kein Fehler. Die Dokumentation unter http://developer.android.com/reference/android/R.attr.html#windowNoDisplay sagt, dass "die Aktivität sofort beendet werden muss, ohne auf Benutzerinteraktion zu warten". Ausnahmebedingungsnachricht schlägt vor, dass die Aktivität abgeschlossen sein muss, bevor 'onResume()' abgeschlossen wird. – koral

-1

Versuchen Sie, targetSdkVersion zu 22 in build.gradle zu ändern. Theme.NoDisplay zeigt Fehler in API-Ebene 23.

4

Meine unsichtbare Aktivität zeigt einen Bestätigungsdialog. Dies tat verlieren das Material Design-Look, wenn ich android:Theme.Translucent.NoTitleBar verwendet.

So, basierend auf den Antworten oben und CommonWare Blog und Android Themen Definitionen ich diesen Stil verwenden, das ein normales AppCompat.Light Thema erweitert:

<style name="AppTheme.NoDisplay" parent="Theme.AppCompat.Light"> 
    <item name="android:windowBackground">@android:color/transparent</item> 
    <item name="android:windowContentOverlay">@null</item> 
    <item name="android:windowIsTranslucent">true</item> 
    <item name="android:windowAnimationStyle">@android:style/Animation</item> 
    <item name="android:windowDisablePreview">true</item> 
    <item name="android:windowNoTitle">true</item> 
</style> 
0

wo android 23> https://www.youtube.com/watch?v=NAcUGwCkrcs

Manifest :

android:theme="@android:style/Theme.Translucent.NoTitleBar" 
Activity extends from Activity. Not AppCompatActivity. 

und für Version> = 23

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){  
    getWindow().setStatusBarColor(getResources().getColor(android.R.color.transparent))} 
Verwandte Themen