หลังจากอัปเดตเป็น API 27 และ Support Library 27.0.2 จู่ๆ ฉันก็ได้รับ Stack Tracs เหล่านี้จำนวนมากใน Crashlytics:
Fatal Exception: java.lang.IllegalArgumentException
at android.os.Parcel.readException(Parcel.java:1544)
at android.os.Parcel.readException(Parcel.java:1493)
at android.app.ActivityManagerProxy.isTopOfTask(ActivityManagerNative.java:5108)
at android.app.Activity.isTopOfTask(Activity.java:5688)
at android.app.Activity.startActivityForResult(Activity.java:3973)
at android.support.v4.app.BaseFragmentActivityApi16.startActivityForResult(Source:54)
at android.support.v4.app.FragmentActivity.startActivityForResult(Source:67)
ฉันเรียกสิ่งนี้ว่า:
ActivityOptions options = ActivityOptions.makeCustomAnimation(activity, R.anim.slide_in_from_right, R.anim.fade_out);
startActivityForResult( intent, REQ_ACTION, options.toBundle());
ฉันไม่สามารถอ่านซอร์สโค้ดได้เนื่องจากยังไม่ได้เผยแพร่ ฉันพยายามแทนที่และใช้โค้ด android-26 ด้วยซ้ำ แต่มันก็แตกต่างออกไป
มีคำเตือนสำหรับการเรียกข้างต้นโดยบอกว่า BaseFragmentActivityApi16.startActivityForResult สามารถโทรจากกลุ่มไลบรารีเดียวกันเท่านั้น ดังนั้นฉันจึงแก้ไขโดยใช้ ActivityCompat แต่ฉันไม่คิดว่ามันจะช่วยแก้ปัญหาข้อขัดข้องได้
นี่เป็นปัญหาของแพลตฟอร์มหรือฉันสามารถแก้ไขปัญหานี้ได้หรือไม่
แก้ไข
if (Build.VERSION.SDK_INT >= 21) {
ActivityOptions options = ActivityOptions.makeCustomAnimation(activity, R.anim.slide_in_from_right, R.anim.fade_out);
startActivityForResult(intent, REQ_ACTION, options.toBundle());
} else {
ActivityOptions options = ActivityOptions.makeCustomAnimation(activity, R.anim.slide_in_from_right, R.anim.fade_out);
ActivityCompat.startActivityForResult(this, intent, REQ_ACTION, options.toBundle());
}
ถ้าฉันเปลี่ยนเป็นด้านบนตามลิงก์ในความคิดเห็นของฉัน Android Studio จะบ่นเหมือนด้านบน นี่อาจเกี่ยวข้องกับปัญหา