【问题标题】:How to add shared element transition when navigating from recycler view to a fragment while using navigation components and safeArgs?如何在使用导航组件和 safeArgs 从回收器视图导航到片段时添加共享元素转换?
【发布时间】:2023-03-26 22:52:02
【问题描述】:

我想显示从我的回收器视图到片段类的共享元素转换,我编写了以下代码:

holder.view.setOnClickListener {
            val extras = FragmentNavigatorExtras(
                holder.view.ivPersonImage to "imageView"
            )
            it.findNavController().navigate(
                HomeFragmentDirections.actionNavHomeToTransactionFragment(
                    customerId,
                    customerName,
                    customerPhoneNumber,
                    imageString
                ), null, null, extras
            )
        }

它在 .navigate 处显示错误:

 None of the following functions can be called with the arguments supplied: 
private open fun navigate(@NonNull p0: NavDestination, @Nullable p1: Bundle?, @Nullable p2: NavOptions?, @Nullable p3: Navigator.Extras?): Unit defined in androidx.navigation.NavController
public open fun navigate(@IdRes p0: Int, @Nullable p1: Bundle?, @Nullable p2: NavOptions?, @Nullable p3: Navigator.Extras?): Unit defined in androidx.navigation.NavController

在 Fragment 类中,我正在使用:

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        sharedElementEnterTransition = TransitionInflater.from(context).inflateTransition(android.R.transition.move)
    }

似乎 safeArgs 不允许显示转换。 我是 Android 新手,很难理解过渡和动画。 请帮帮我,我被困在这里这么多天了

【问题讨论】:

    标签: android kotlin android-recyclerview shared-element-transition android-safe-args


    【解决方案1】:

    SafeArgs 允许您设置共享过渡。只需检查navigate()documentation,有两个参数过载:NavDirectionsNavigator.Extras。所以你的代码应该是这样的:

    holder.view.setOnClickListener {
        val extras = FragmentNavigatorExtras(holder.view.ivPersonImage to "imageView")
        it.findNavController().navigate(
            HomeFragmentDirections.actionNavHomeToTransactionFragment(
                customerId,
                customerName,
                customerPhoneNumber,
                imageString
            ), 
            extras
        )
    }
    

    【讨论】:

      猜你喜欢
      • 2019-05-12
      • 2018-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多