Я пробовал этот код, но нажатие кнопки в первом фрагменте не изменяет строковое значение во втором.
Это файл kotlin первого фрагмента.Он имеет две кнопки, при нажатии на которые следует изменить строковое значение.Внутри этого класса я также создал внутренний интерфейс OnButtonClickListener
, как упоминалось в документации Android.
viewHolder = inflater.inflate(R.layout.fragment_test_one, container, false)
viewHolder.btnFragTestOneMessageOne.setOnClickListener {
listener.onButtonCLickListener("MESSAGE ONE")
}
viewHolder.btnFragTestOneMessageTwo.setOnClickListener {
listener.onButtonCLickListener("MESSAGE TWO")
}
return viewHolder
Это второй фрагмент.Макет этого фрагмента также имеет textView, который должен быть изменен одним нажатием кнопки внутри первого фрагмента.
lateinit var viewHolder: View
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
viewHolder = inflater.inflate(R.layout.fragment_test_two, container, false)
return viewHolder
}
А вот файл действий.
override fun onButtonCLickListener(strMessage: String) {
testTwoFragment.viewHolder.tvFragTestTwo.text = strMessage
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_fragment_test)
supportFragmentManager.beginTransaction().add(R.id.flFragTest, TestOneFragment()).commit()
btnTestFragOne.setOnClickListener {
supportFragmentManager.beginTransaction().replace(R.id.flFragTest, testOneFragment).commit()
}
btnTestFragTwo.setOnClickListener {
supportFragmentManager.beginTransaction().replace(R.id.flFragTest, testTwoFragment).commit()
}
}