小编Ale*_*kov的帖子

如何使用Android导航组件将共享的过渡元素从RcyclerView的项目实现为Fragment?

我有一个非常简单的案例。我想在RececlerView和中的项目之间实现共享元素转换fragment。我在我的应用程序中使用android导航组件。

上有一篇关于developer.android上的共享过渡和关于stackoverflow的文章,但是该解决方案仅适用于位于fragment布局中的视图,该视图开始过渡并且不适用于的项目RecyclerView。在github上也有一个lib,但是我不想依靠第三方的lib自己做。

有解决方案吗?也许应该工作,这只是一个错误?但是我还没有找到任何信息。

代码示例:

过渡开始

class TransitionStartFragment: Fragment() {

override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
    return inflater.inflate(R.layout.fragment_transition_start, container, false)
    }

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)
    val testData = listOf("one", "two", "three")
    val adapter = TestAdapter(testData, View.OnClickListener { transitionWithTextViewInRecyclerViewItem(it) })
    val recyclerView = view.findViewById<RecyclerView>(R.id.test_list)
    recyclerView.adapter = adapter
    val button = view.findViewById<Button>(R.id.open_transition_end_fragment)
    button.setOnClickListener { transitionWithTextViewInFragment() }
    }

private fun transitionWithTextViewInFragment(){ …
Run Code Online (Sandbox Code Playgroud)

android shared-element-transition android-recyclerview android-architecture-navigation

7
推荐指数
2
解决办法
1487
查看次数

当我在 LiveData 观察器中使用 navController 时,Android 导航组件图停止正常工作

我在我的演示应用程序中使用了 android 导航组件。我有一个非常简单的案例。一个活动,两个片段,A 和 B。我已经按照 Google 的示例应用程序设置了导航控件。当我尝试使用简单的 onClickListener 从 A 打开片段 B 时,如下所示:

val button.setOnClickListener {
       val action = AFragmentDirections.openFragmentB()
       findNavController().navigate(action)
    }
Run Code Online (Sandbox Code Playgroud)

一切正常。B 片段打开,通过点击后退按钮它会弹出。但是当我尝试从 LiveData 观察者使用它时,如下所示:

viewModel.openFragmentB.observe(viewLifecycleOwner, Observer {
        val action = AFragmentDirections.openFragmentB()
        findNavController().navigate(action)
    })
Run Code Online (Sandbox Code Playgroud)

片段 B 打开,但通过点击后退按钮应用程序崩溃,错误导航目标 com.myapp:id/open_fragmetn_b 是此 NavController 未知的。

为什么会发生这种情况以及如何将导航组件与 LiveData 一起使用?

navigation android android-livedata android-architecture-navigation

5
推荐指数
1
解决办法
840
查看次数