【发布时间】:2017-10-09 07:55:14
【问题描述】:
我有一个运行架构组件的简单应用程序。由于库的最新更新(“Beta2”),我的 observable 没有被触发(在 Fragment 中,相同的代码适用于 Activity)
这是一个当前不工作的示例。
class SampleFragment : Fragment() {
private var isDataReady = MutableLiveData<Boolean>()
private val registry = LifecycleRegistry(this)
override fun getLifecycle(): LifecycleRegistry = registry
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.fragment_main2, container, false)
}
override fun onViewCreated(view: View?, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
fab.setOnClickListener { _ ->
isDataReady.postValue(true)
}
isDataReady.observe(this, Observer {
Snackbar.make(fab, "Hello!", Snackbar.LENGTH_LONG).show()
})
}
}
我错过了什么吗?
感谢您的帮助。
【问题讨论】:
-
看看这对你有没有帮助:stackoverflow.com/questions/45889604/…
-
谢谢。只要使用 LifecycleFragment,它就可以工作。但它现在已被弃用,其逻辑已移至 Fragment(来自 Support Library v26)。我仍然有这个问题:(
-
我还没有迁移到 beta2。我会试试看我是否仍然有效
-
我看到如果您在项目中使用 JAVA8,beta2 中的更改是有效的。你会用吗?
-
我不知道我使用的是哪个版本的 Java(我使用的是 Android Studio 3.0 beta),但我发现它适用于活动而不是片段。
标签: android observable lifecycle android-architecture-components