如何将回调从活动传递到片段

约翰·安德斯

在文档中描述了将数据从片段传递到活动的方法(https://developer.android.com/training/basics/fragments/communicating.html)。我有相反的情况,我需要将数据从活动传递到片段。设置从片段回调到活动的最佳方法是什么?我用(activity as MainActivity).setCallback(this)一个片段,它的工作原理。

本吉

在这种情况下,您的活动不知道该片段是否已创建/未销毁。您可以使用liveData实现所需的功能。

在MainActivity中:

class MainActivity: BaseFragmentActivity() {
    val viewModel: CustomViewModel by viewModels()

    fun yourFunction() {
        viewModel.dataToPassToFragment.value = yourData
    }

}

ViewModel:

class CustomViewModel: ViewModel() {
    var dataToPassToFragment = MutableLiveData<String>()
}

片段:

class CustomFragment: BaseFragment() {
    override val viewModel: CustomViewModel by activityViewModels()

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
        super.onCreateView(inflater, container, savedInstanceState)
        viewModel.dataToPassToFragment.observe(this, Observer { data ->
            // do what you want with this data
        })
    }
}

这样做,您的活动不需要了解片段,并且如果活动更改了数据并且片段被销毁,则不会有任何崩溃。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将回调函数从Java传递到Kotlin类

如何将回调从 TableView 传递到 TableView Cell?

如何使用接口将回调从活动回调到片段

如何将多个数据从片段传递到活动

如何将位图从片段传递到活动?

如何将List <NameOfClassObject>从活动传递到片段

如何将数据从片段传递到活动?

如何将字符串从片段传递到活动

如何将实时变化的数据从活动传递到片段?

Scala-如何将回调传递给方法

如何将回调函数传递给子组件?

如何将回调函数传递给父级

如何将回调函数传递给返回多行的aggregate()?

如何将回调传递给孩子而不触发它

从javascript调用dart编译的Javascript时,如何将回调函数传递到dart编译的Javascript中?

如何将回调从一个子组件传递到另一个

如何将字符串从活动传递到 android 中选项卡式活动的片段

如何将回发参数从JS传递到VB?

如何将回调作为变量传递给预定义的回调

如何将回调传递给传递给“ vo”库的生成器?

如何将多个参数从单个活动传递到多个片段

如何将带有ArrayList的捆绑包从片段传递到活动

如何将数据从活动传递到导航抽屉android中的片段

如何将自定义对象arraylist从活动传递到带有实例的片段

如何将价值从片段按钮传递到另一个活动

如何将自定义数组列表从片段传递到活动

如何将数组列表对象从活动传递到android中的片段

如何将自定义对象从活动传递到片段?

将回调传递给startActivityForResult而不更改活动类