安卓导航架构库片段之间的接口回调 (nav_graph)



所以当我使用 frameLayout 与片段管理器交换片段时,我可以做这样的事情来将参数发送到新的推送片段

class TestFragment : GenericFragment(R.layout.test_fragment) {
private var arg1: Int = 0
private lateinit var onResult : ( () -> Unit )
companion object {
fun newInstance(arg1 : Int, onResult: ( () -> Unit )) = TestFragment().apply {
this.arg1 = arg1
this.onResult = onResult
}
}
}
frag = TestFragment.newInstance(1) {
//some stuff to do when finished
}
val transaction = supportFragmentManager.beginTransaction()
transaction.replace(content.id, frag, tag)
transaction.commitAllowingStateLoss()   

问题是我如何使用 arch 导航组件(android.arch.navigation:navigation(来做到这一点。我发现您只能发送基元类型或某些类型的可序列化。

执行此操作的一种方法是将共享视图模型与这两个片段之间的实时数据结合使用。

sharedViewModel = ViewModelProviders.of(this.getActivity()).get(SharedViewModel::class.java)

另一种选择是使用FragmentManager.BackStackEntry 我还没有尝试过这个。您可以在此处找到更多信息 https://developer.android.com/reference/android/app/FragmentManager.BackStackEntry

最新更新