1

postvalue() で更新されているにもかかわらず、変更可能な arraylist が null を返す理由がわかりません。Toastを使って表示しようとしたところ、nullだと思う[]が表示されました。間にスペースがなく、箱のように見えました。テキストを表示するために toString() も実行しました。どうすればこの問題を解決できますか?

これが私の主な活動です:

val list = ArrayList<String>()
list.add("text1")
list.add("text2")
val viewmodel = ViewModelProviders.of(this).get(viewmodel::class.java)
viewmodel.Testlist.postValue(list)

ビューモデル:

class viewmodel: ViewModel() {
    val Testlist: MutableLiveData<ArrayList<String>> = MutableLiveData()
    init {
        Testlist.value = arrayListOf()
    }
}

断片:

トップエリア:

activity?.let {
    val viewmodel = ViewModelProviders.of(this).get(viewmodel::class.java)
    observeInput(viewmodel)
}

ボトムエリア:

private fun observeInput(viewmodel: viewmodel) {
    viewmodel.Testlist.observe(viewLifecycleOwner, Observer {
        it?.let {
            Toast.makeText(context, it.toString(), Toast.LENGTH_LONG).show()
        }
    })
}
4

4 に答える 4

1

ビューモデルの同じインスタンスを使用しましたか? または、フラグメント クラスで別のビュー モデルを定義しましたか? 問題は、MutableLiveData が更新されたものではなく、ビュー モデルの別のインスタンスにアクセスしている可能性があります。

于 2019-08-22T12:28:36.693 に答える