私は次のエラーを受け取っていますが、なぜそれが起こっているのか分かりません。
エラー:
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)
コード:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
System.out.println("Started");
}
Android 6.0(API 23)、API 22で動作するAVDでコードを実行しようとしています。
これはAndroid M開発者プレビューのバグです。 詳細
私は同じ問題、同じクラッシュを抱えています
did not call finish() prior to onResume() completing
エラーメッセージ。だから私はv23\styles.xmlを作成しました
<style name="AppTheme" parent="Android:Theme.Translucent">
...
</style>
通常のstyles.xmlには
<style name="AppTheme" parent="Android:Theme.NoDisplay">
...
</style>
正常に動作し、クラッシュしなくなりました。ただし、API 23でTheme.Translucentを使用すること、特に defined as
半透明のアクティビティのテーマ(APIレベル10以下)。
彼らがこのバグを修正することを本当に願っています。
非表示のアクティビティに確認ダイアログが表示されます。これは材料設計の外観を失うを使用したときAndroid:Theme.Translucent.NoTitleBar
。
したがって、上記の回答とCommonWareのブログとAndroidテーマの定義に基づいて、このスタイルを使用します。これにより、通常のAppCompat.Lightテーマが拡張されます。
<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>
ここでAndroid 23> https://www.youtube.com/watch?v=NAcUGwCkrcs
マニフェスト:
Android:theme="@Android:style/Theme.Translucent.NoTitleBar"
Activity extends from Activity. Not AppCompatActivity.
およびバージョン> = 23の場合
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.Lollipop){
getWindow().setStatusBarColor(getResources().getColor(Android.R.color.transparent))}
これは、ユーザーが表示できないActivity
にテーマを設定しているためです。理由は、Androidがこれを行うため、不可視のActivity
を無期限に実行できないためです。
finish()
が呼び出される前にアクティビティでonResume()
を呼び出すと(エラーメッセージに示されているように)、これが発生しなくなります。
ユースケースでは、非表示のActivity
を起動して、ディープリンクを処理し、アプリの正しい部分にリダイレクトしました。