通过活动更新片段内部的值

编程入门 行业动态 更新时间:2024-10-28 17:13:39
本文介绍了通过活动更新片段内部的值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我希望将我的旧应用转移到MVVM,所以请您帮助我进行此测试:

I wish to transfere my old app to MVVM, so can you please help me with this test:

共享的ViewModel:

Shared ViewModel:

class SharedViewModel : ViewModel() { private var _numberF1 = MutableLiveData<Int>().apply { postValue(0)} val numberF1: LiveData<Int> get() = _numberF1 fun addNumberF1() { _numberF1.value = _numberF1.value?.plus(1) } }

片段:

class Fragment1 : Fragment() { companion object { fun newInstance() = Fragment1() } private lateinit var viewModel: SharedViewModel override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { val view: View = inflater.inflate(R.layout.fragment_1, container, false) return view } override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) viewModel = ViewModelProvider(this).get(SharedViewModel::class.java) viewModel.numberF1.observe(this, { Log.d("DTAG","Should be updated") textViewNumberF1.text = it.toString() }) } }

MainActivity:

MainActivity:

class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val viewModel = ViewModelProvider(this).get(SharedViewModel::class.java) var fragment1 = Fragment1.newInstance() navigateToFragment(fragment1) buttonFrag1Up.setOnClickListener { viewModel.addNumberF1() } } private fun navigateToFragment(fragment: Fragment) { val fragmentTransaction = supportFragmentManager.beginTransaction() fragmentTransaction.addToBackStack(null) fragmentTransaction.replace(R.id.mainFrame, fragment) fragmentTransactionmit() } }

该值未更新正确的方法是什么?

The value is no being updated What is the right approach to this?

推荐答案

如果要获取共享的 viewModel ,则应在片段中编写以下内容:

If you want to get shared viewModel you should write in your fragment this :

val viewModel = ViewModelProvider(requireActivity()).get(SharedViewModel::class.java)

而不是您拥有的东西:

val viewModel = ViewModelProvider(this).get(SharedViewModel::class.java)

更多推荐

通过活动更新片段内部的值

本文发布于:2023-11-11 04:45:45,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1577415.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:片段

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!