2017-10-09 117 views
1

我有一个运行架构组件的简单应用程序。自从该库(“Beta2”)的最新更新以来,我遇到了一个问题,我的observable没有被触发(在一个片段中,相同的代码在一个Activity上运行)Android体系结构组件 - Observable not triggered

这是一个当前不工作的示例。

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() 
     }) 
    } 
} 

我错过了什么吗?

感谢您的帮助。

+0

看看这可以帮助你:HTTPS:/ /stackoverflow.com/questions/45889604/livedata-is-not-updating-its-value-after-first-call – joao86

+0

谢谢。只要使用LifecycleFragment,它就会一直工作,但现在已经被弃用,它的逻辑已经转移到片段(来自支持库v26)我仍然有这个问题,虽然:( – colletjb

+0

我还没有迁移到beta2,我会尝试一下,看看我还在工作 – joao86

回答

0

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

因为我们在一个片段中,我必须使用活动来观察。 (应该是“本”,但它至今没有工作

isDataReady.observe(activity, Observer { 

我想这是一个临时的解决办法...

感谢您的帮助