如何解决我的活动中的ViewModel.Observe函数不会触发
我有一个从api获取数据的类。我已经记录了我得到的结果,所以我确定正在获取数据。但是,本应检查我的活动数据中的更改的活动中的viewModel.Observe()并未触发。这是我的下面的代码
class PokemonOverviewModel():ViewModel() {
private var pokemonIndividualData = MutableLiveData<PokemonIndividualDetails>()
fun getPokemonIndividualDataDetails(): LiveData<PokemonIndividualDetails> {
return pokemonIndividualData
}
fun getPokemonIndividualDetails(id:String){
viewModelScope.launch {
try {
val pokemonIndividualResults = pokemonApi.retrofitService.getPokemonDetails(id)
Log.d("SUCCESSDETAILS","${pokemonIndividualResults}")
pokemonIndividualData.setValue(pokemonIndividualResults)
} catch (e: Exception){
Log.d("FAILUREDETAILS","$e")
}
}
}
}
正在调用我的viewModel.Observe()的Activity类
class PokemonDetails : AppCompatActivity() {
lateinit var pokemonBinding: ActivityPokemonDetailsBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
pokemonBinding = DataBindingUtil.setContentView(this,R.layout.activity_pokemon_details)
var height_details = pokemonBinding.heightDetails
var string = intent.getStringExtra("NUM")
PokemonOverviewModel().getPokemonIndividualDetails(string!!)
Log.d("GOTTENURL","$string")
val viewGotten = ViewModelProvider(this).get(PokemonOverviewModel::class.java)
viewGotten.getPokemonIndividualDataDetails().observe(this,Observer {
Toast.makeText(this,"DATA CHANGED",Toast.LENGTH_LONG).show()
})
}
}
解决方法
我发现我两次初始化了我的视图模型。观察功能仅观察第二个实例
class PokemonDetails : AppCompatActivity() {
lateinit var pokemonBinding: ActivityPokemonDetailsBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
pokemonBinding = DataBindingUtil.setContentView(this,R.layout.activity_pokemon_details)
var height_details = pokemonBinding.heightDetails
var string = intent.getStringExtra("NUM")
// height_details.text = PokemonDetailsList.getList().toString()
Log.d("GOTTENURL","$string")
val viewGotten = ViewModelProvider(this).get(PokemonOverviewModel::class.java)
//I added this line
viewGotten.getPokemonIndividualDetails(string!!)
viewGotten.getPokemonIndividualDataDetails().observe(this,Observer {
Toast.makeText(this,"DATA CHANGED",Toast.LENGTH_LONG).show()
height_details.text = it.height
})
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。