Martynas
Martynas

Reputation: 113

Android java.lang.IllegalArgumentException: Invalid Transition types

Recently i have got java.lang.IllegalArgumentException: Invalid Transition types. This exception happens on android api 19 and it appeared after i have updated android build tools and support libraries to version 27.

Does anyone know what has changed with KitKat transitions?

    Fragment fragment = new  Fragment();
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
        Transition transition = new AutoTransition();
        fragment.setSharedElementEnterTransition(transition);
    }

    String backStateName = fragment.getClass().getName();
    FragmentManager manager = getFragmentManager();
    FragmentTransaction ft = manager.beginTransaction();
    ft.addSharedElement(view, "TransitionView");
    ft.replace(R.id.mainActivity_container, fragment, backStateName);
    ft.addToBackStack(backStateName);
    ft.commit();

Full exception:

Fatal Exception: java.lang.IllegalArgumentException: Invalid Transition types
   at android.support.v4.app.FragmentTransition.chooseImpl(FragmentTransition.java:461)
   at android.support.v4.app.FragmentTransition.configureTransitionsOrdered(FragmentTransition.java:3317)
   at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2380)
   at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2338)
   at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2245)
   at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:703)
   at android.os.Handler.handleCallback(Handler.java:733)
   at android.os.Handler.dispatchMessage(Handler.java:95)
   at android.os.Looper.loop(Looper.java:136)
   at android.app.ActivityThread.main(ActivityThread.java:5590)
   at java.lang.reflect.Method.invokeNative(Method.java)
   at java.lang.reflect.Method.invoke(Method.java:515)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)
   at dalvik.system.NativeStart.main(NativeStart.java)

UPDATE

After changing from if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) to if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) I don't get exception.

Upvotes: 9

Views: 5309

Answers (5)

Bacar Pereira
Bacar Pereira

Reputation: 1145

In my case I was using MaterialContainerTransform and I replaced

com.google.android.material.transition.platform 

by

com.google.android.material.transition

Upvotes: 0

Jacob Nordfalk
Jacob Nordfalk

Reputation: 3533

You are mixing transitions from androidx (the support library) and the platform. For example.:

import androidx.transition.AutoTransition;
import android.transition.Fade;

(note the missing 'x')

Change that to only use support library, like this:

import androidx.transition.AutoTransition;
import androidx.transition.Fade;

Upvotes: 19

RevakoOA
RevakoOA

Reputation: 611

After switching to androidX, I got this error because some import was from

android.package

and some from

androidx.package

Upvotes: 1

user3265561
user3265561

Reputation: 832

Looking at the change here it looks like it should probably read 'must' use support transitions rather than 'can' use them. Try changing your AutoTransition from android.transition.AutoTransition to android.support.transition.AutoTransition and it should work perfectly without needing any SDK version checks.

Upvotes: 4

user4571931
user4571931

Reputation:

check your fragment import like below..

import android.support.v4.app.Fragment;

if you used addSharedElement make change in app level gradle file api level 21.

     minSdkVersion 21

Upvotes: 3

Related Questions