【问题标题】:Android java.lang.IllegalArgumentException: Invalid Transition typesAndroid java.lang.IllegalArgumentException:无效的转换类型
【发布时间】:2018-04-13 08:26:36
【问题描述】:

最近我收到了java.lang.IllegalArgumentException: Invalid Transition types。 此异常发生在 android api 19 上,它出现在我将 android 构建工具和支持库更新到版本 27 之后。

有人知道 KitKat 转换发生了什么变化吗?

    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();

完全例外:

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)

更新

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) 更改为if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) 后,我没有收到异常。

【问题讨论】:

    标签: android exception android-4.4-kitkat transitions


    【解决方案1】:

    您正在混合来自 androidx(支持库)和平台的转换。 例如:

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

    (注意缺少的“x”)

    将其更改为仅使用支持库,如下所示:

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

    【讨论】:

    • 就我而言,我将androidx.* 转换与android.* 转换混合使用
    • 感谢@AdamJohns。我已将答案更改为 androidx
    • 让我开心。谢谢!
    • 我是我的情况,我在 import androidx.transition.TransitionInflater 上缺少“x”
    【解决方案2】:

    查看here 的更改,它看起来应该应该是“必须”使用支持转换而不是“可以”使用它们。尝试将您的 AutoTransition 从 android.transition.AutoTransition 更改为 android.support.transition.AutoTransition,它应该可以完美运行,无需任何 SDK 版本检查。

    【讨论】:

      【解决方案3】:

      检查您的片段导入,如下所示..

      import android.support.v4.app.Fragment;
      

      如果您使用了 addSharedElement,请在应用级别 gradle 文件 api 级别 21 中进行更改。

           minSdkVersion 21
      

      【讨论】:

      • 是的,我正在使用正确的导入,我无法将 minSdkVersion 设置为 21,因为我需要支持我的应用程序来降低 api 设备。同样的代码在构建工具和支持库更新之前也可以工作
      • 那个时候你需要为特定的方法定义注解,比如@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
      • 那么我需要做些什么才能让转换从 api19 开始工作。
      • 过渡将是主要的事情 addSharedElement 需要 api 21。
      • 我添加了 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) ft.addSharedElement(view, "TransitionView");但仍然得到异常
      【解决方案4】:

      切换到 androidX 后,我收到此错误,因为某些导入来自

      android.package

      还有一些来自

      androidx.package

      【讨论】:

        【解决方案5】:

        在我的例子中,我使用的是 MaterialContainerTransform 并且我替换了

        com.google.android.material.transition.platform 
        

        com.google.android.material.transition
        

        【讨论】:

          猜你喜欢
          • 2019-11-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多