rjava.lang.IllegalArgumentException on startActivi

2019-03-18 17:51发布

问题:

Hi I am using following code but sometimes app is crashing with error:

java.lang.IllegalArgumentException in startActivity(slideactivity, bndlanimation);

if (android.os.Build.VERSION.SDK_INT >= 16) {
       Bundle bndlanimation = ActivityOptions.makeCustomAnimation(getApplicationContext(), R.anim.slide_in, R.anim.slide_out).toBundle();
       startActivity(slideactivity, bndlanimation);
     } else
       startActivity(slideactivity);
       finish();

Here is the crash logs

java.lang.IllegalArgumentException 1 at android.os.Parcel.readException(Parcel.java:1553) 2 at android.os.Parcel.readException(Parcel.java:1499) 3 at android.app.ActivityManagerProxy.isTopOfTask(ActivityManager‌​Native.java:4465) 4 at android.app.Activity.isTopOfTask(Activity.java:5361) 5 at android.app.Activity.startActivityForResult(Activity.java:37‌​70) 6 at android.app.Activity.startActivity(Activity.java:4003) 7 at com.tapcibo.tapcibo.uifragment.LaunchActivity.a(SourceFile:1‌​05)

回答1:

Try to use ActivityOptionsCompat instead of ActivityOptions if you are using ActivityCompat.startActivity(). As well use ActivityOptionsCompat.makeSceneTransitionAnimation() to make animation options.



回答2:

I found the problem, after digging really deep I saw that there is some problem with the SDK > 21 so lollipop up. In my case this happens when using transparent theme together with some enter and exit transitions.

Two options:

If I remove the ActivityOptions.makeCustomAnimation().toBundle(); and work good again.

If I set my theme to my app normal theme works good too.

I will have to investigate further but I guess there is some configuration on the theme that makes this crash.



回答3:

instead of

startActivity(slideactivity, bndlanimation);

use

ActivityCompat.startActivity(this, slideactivity, bndlanimation)