Android 正在从活动更新片段内的值

Android 正在从活动更新片段内的值,android,mvvm,observable,android-viewmodel,Android,Mvvm,Observable,Android Viewmodel,我希望将我的旧应用程序转移到MVVM,请您帮助我进行此测试: 共享视图模型: class SharedViewModel : ViewModel() { private var _numberF1 = MutableLiveData<Int>().apply { postValue(0)} val numberF1: LiveData<Int> get() = _numberF1 fun addNumberF1() {

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

共享视图模型:

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 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)
        fragmentTransaction.commit()

    }
}
没有更新该值
正确的方法是什么?

如果你想分享
viewModel
你应该在你的片段中写下:

val viewModel = ViewModelProvider(requireActivity()).get(SharedViewModel::class.java)
而不是你所拥有的:

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

如果您想共享
viewModel
,您应该在片段中写入以下内容:

val viewModel = ViewModelProvider(requireActivity()).get(SharedViewModel::class.java)
而不是你所拥有的:

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

您在哪里更新了该值?我在代码中看不到。代码中没有你称之为_numberF!。addNumnerF!(). 是否要在片段的开始处使用该值?buttonFrag1Up.setOnClickListener{viewModel.addNumberF1()}在哪里更新了该值?我在代码中看不到。代码中没有你称之为_numberF!。addNumnerF!(). 是否要在片段的开始处使用该值?buttonFrag1Up.setOnClickListener{viewModel.addNumberF1()}