0
我尝试架构组件的实时数据的基本实现与科特林这样后:的Android LiveData观察员不活跃的第一次更新
class MarketFragment : LifecycleFragment(){
......
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
viewModel=ViewModelProviders.of(this).get(MarketViewModel::class.java)
viewModel.book?.observe(this, Observer { book-> //updateUI })
....
我ViewModel类创建这样的:
class MarketViewModel : ViewModel()
{
var book: MutableLiveData<Book>? =MutableLiveData()
var repository: Repository?= Repository()
init {
update("parameter")
}
fun update(s: String)
{
book=repository?.getBook(s)
}
}
而且我的仓库:
fun getBook(bookSymbol:String):MutableLiveData<Book>
{
val book=MutableLiveData<Book>()
......
call . enqueue (object : Callback<Book> {
override fun onResponse(call: Call<Book>?, response: Response<Book>?) {
book.value=response?.body()
}
.....
})
return book
}
}
而且所有这些工作都很好,并且UI已经更新,因为它应该但只是第一次。如果我尽量让人工电话从UI操作更新视图模型,改造呼叫仍然工作正常,但新的数据不会被发送到片段中的观察报:
//this doesn't work:
viewModel.update("string")
//This returns false:
viewModel.book.hasActiveObservers()
是它的预期的行为观察者在第一次触发后变为非活动状态?
我有一个相同类型的问题可以请你看看我的代码......第一次其触发....但之后,onChanged不被调用,直到我改变配置.. –
这里是链接@Vincent Minmoun-Prat https://stackoverflow.com/questions/48341561/will-the-onchanged-method-trigger - 只是-AS-WE-变化的数据偶数如果 - 我们 - 不要/ 48342600?noredirect = 1个#comment83670748_48342600 –