在屏幕2上,我有一个按钮,单击该按钮可在文本视图中显示文本(“ MON”)。我还希望用户选择的那一天显示在另一个屏幕上(屏幕4),而不是导航菜单中的下一个屏幕,而是随后的一个屏幕。因此,如果用户通过单击屏幕2上的按钮选择星期一,星期三和星期五的日子,我希望这些日子出现在该屏幕上,然后又出现在屏幕4上。屏幕2,但不在屏幕4上。我该如何解决?
private fun onButtonClicked() {
when {
select_day_mon_img_btn.setOnClickListener {
select_day_mon_word_txt.text = resources.getString(R.string.mon)
home_day_word_txt.text = getString(R.string.mon)
home_day_word_txt.setOnClickListener {
view?.findNavController()?.navigate(
R.id.action_selectDaysFragment_to_homeFragment)
您可以使用SharedViewModel
class SharedViewModel : ViewModel() {
val selected = MutableLiveData<String>()
fun select(day: String) {
selected.value = day
}
}
在第二个屏幕上将所选日期传递到视图模型中
class Screen2 : Fragment() {
// Use the 'by activityViewModels()' Kotlin property delegate
// from the fragment-ktx artifact
private val model: SharedViewModel by activityViewModels()
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
home_day_word_txt.setOnClickListener {
model.select(getString(R.string.mon))
view?.findNavController()?.navigate(
R.id.action_selectDaysFragment_to_homeFragment)
}
}
}
在第四个屏幕上
class Screen4 : Fragment() {
// Use the 'by activityViewModels()' Kotlin property delegate
// from the fragment-ktx artifact
private val model: SharedViewModel by activityViewModels()
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
model.selected.observe(viewLifecycleOwner, Observer<String> { day ->
// Update the UI
textView.text = day
})
}
}