【发布时间】:2021-06-17 15:00:24
【问题描述】:
我正在从 Fragment A 导航到 Fragment B ,在 Fragment BI 中需要触发在 Fragment A 中创建的回调,我不想为此使用共享视图模型,而我只想从片段A
目前这是我的方法
class FragmentA: MyListener {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
FragmentB().apply {
this.myListener = this@FragmentA
}
myButton.setOnClickListener { findNavController().navigate(R.id.fragmentB) }
}
override fun launchFunction() { ... }
现在从我的 Fragment B 我想用我拥有的另一种方法触发这个监听器,但接口是 null
class FragmentB {
val myListener: MyListener? = null
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
myListener.launchFunction()
}
但这不起作用,我怀疑是从 FragmentA 我正确地将侦听器应用到 FragmentB 的一个实例,该实例与 navController 用于导航的实例不同
我该如何处理?
谢谢
【问题讨论】:
-
在后栈的片段上调用任何监听器都是不安全的。您不使用APIs for returning a result 是否有原因?
-
我没有返回结果,而是需要从 Fragment A @ianhanniballake 触发操作
-
我想我会选择这个developer.android.com/guide/navigation/…,然后弹出片段b来执行片段A方法@ianhanniballake
标签: android kotlin android-fragments android-architecture-navigation