У меня есть 2 фрагмента: GameFragment и PostGameFragment. В GameFragment у меня есть CustomView со счетом игрока.
Когда игрок проигрывает, я создал onLoseListener, который говорит GameFragment измениться на PostGameFragment, и я хочу обновить TextView со значением счета, который находится внутри CustomView.
Как мне это сделать?
Я пробовал textView.text = valueToUpdate внутри CustomView, но выдает ошибку: textView не должен быть нулевым
Вот мой метод PostGameFragment onCreateView. В этом XML-фрагменте находится TextView, который я хочу обновить.
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val view: View = inflater.inflate(R.layout.fragment_post_game, container, false)
view.postGameLayout.setBackgroundResource(R.drawable.ic_postgame)
view.button.setOnClickListener { view ->
activity!!.supportFragmentManager
.beginTransaction()
.replace(R.id.fragment_holder,GameFragment.newInstance() )
.addToBackStack(GameFragment.toString())
.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
.commit()
}
// Return the fragment view/layout
return view
}
А вот метод внутри моего CustomView, этот метод проверяет, проиграл ли игрок, если нет, то добавляет +1 к счету. Я хочу обновить TextView со счетом, когда игрок проигрывает.
fun checkLoser() {
if (ballInGame.posy >= height) {
stopAnimation()
onLoseListener.invoke()
}else{
score += 1
}
}
Вы можете использовать интерфейс для связи между вашим фрагментом и вашим пользовательским представлением и для обновления значения текста с его помощью.
я обновил пост с кодом
Пожалуйста, проверьте, что значение valueToUpdate не равно нулю и привязывает текстовое представление findViewById.
пытаться
textview.setText(valueToUpdate);
не могли бы вы поделиться фрагментом кода.