【问题标题】:Android Architecture Components - Observable not triggeredAndroid 架构组件 - Observable 未触发
【发布时间】: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


【解决方案1】:

我终于想出了解决上述问题的办法。

由于我们在一个片段中,我必须使用 Activity 来观察。 (应该是“this”,但目前还不行。

isDataReady.observe(activity, Observer {

我想这是一个临时修复...

感谢您的帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-24
    • 2016-10-28
    • 1970-01-01
    • 2013-11-22
    • 2021-12-23
    • 1970-01-01
    • 2011-11-10
    相关资源
    最近更新 更多