为什么 Android 团队将最佳实践更改为如何将接口(interface)分配给 fragment 。
在 fragment onAttach(context: Context)
之前,我们将上下文转换为接口(interface)。
private lateinit var onHeadlineSelectedListener: OnHeadlineSelectedListener
override fun onAttach(context: Context?) {
super.onAttach(context)
onHeadlineSelectedListener = activity as OnHeadlineSelectedListener
}
现在 Android 建议在 onAttachFragment()
上执行此操作,链接如下:
class MainActivity : Activity(), HeadlinesFragment.OnHeadlineSelectedListener {
// ...
fun onAttachFragment(fragment: Fragment) {
if (fragment is HeadlinesFragment) {
fragment.setOnHeadlineSelectedListener(this)
}
}
}
https://developer.android.com/training/basics/fragments/communicating#kotlin
最佳答案
现在最好使用 viewModel 来保存数据或 Action 的状态,并且您可以在两者之间拥有实时数据
1.so创建activity然后创建SheredViewModel
2.添加livedata:LiveData
通过 viewModelProviders.of(this)[SheredViewModel] 将您的 View 模型添加到您的 Activity 中
如果您想监听 Activity 中的变化或其他任何地方的变化,请在 Activity 中添加观察者
转到您的 fragment 添加 viewModelProviders.of(activity)[SheredViewModel]
现在在这种情况下,如果您将任何数据发布到 liveData:LiveData,任何人都可以优雅而干净地收听您的更改
你可以在这个链接中查看这个例子的android文档
https://developer.android.com/topic/libraries/architecture/viewmodel
关于android - 与其他 fragment 通信 - 为什么最佳实践改变了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58123809/