Activity did not call finish? (API 23)

筅森魡賤 提交于 2019-11-28 05:47:09

This is a bug in Android M developer preview. More details

I'm having the same problem, the same crash with the

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

error message. So I created the v23\styles.xml

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

while the normal styles.xml has

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

It works fine, no longer crashes. However, I don't know how good is this solution, to use Theme.Translucent in API 23, especially as it is defined as

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

I really hope they fix this bug.

Sam

I found a workaround. Call setVisible(true) in onStart():

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

My invisible Activity shows a confirmation dialog. This did lose the material design look when I used android:Theme.Translucent.NoTitleBar.

So, based on answers above and CommonWare's blog and the Android themes definitions I use this style, which extends a normal AppCompat.Light theme:

<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>
Miguel Gama

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

Manifest:

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

and for version >= 23

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

It is due to setting a theme on an Activity that the user cannot see. I guess the reason Android does this is so you can't just run an invisible Activity indefinitely.

Calling finish() in your activity before onResume() gets called (like the error message says) will stop this from happening.

My use case was launching an invisible Activity to handle deep links and direct it to the correct part of my app.

Try changing targetSdkVersion to 22 in build.gradle. Theme.NoDisplay shows error in api level 23.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!