本文介绍了通过活动更新片段内部的值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我希望将我的旧应用转移到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)更多推荐
通过活动更新片段内部的值
发布评论