Используйте интерфейс для связи между двумя фрагментами.фрагмент_2 будет реализовывать интерфейс, а фрагмент_1 будет вызывать этот метод интерфейса при изменении ввода.
FragmentOne
class FragmentOne : Fragment() {
var listener: DataPassCallback? = null
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
return inflater.inflate(R.layout.fragment_one, container, false)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
et_input.addTextChangedListener(object : TextWatcher {
override fun afterTextChanged(s: Editable?) {
}
override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
}
override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {
listener?.dataChaged(s.toString())
}
})
}
}
FragmentTwo
class FragmentTwo : Fragment(), DataPassCallback {
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.fragment_two, container, false)
}
override fun dataChaged(data: String) {
td_output.text = data
}
}
Интерфейс для передачи данных
interface DataPassCallback {
fun dataChaged(data: String)
}
Операция добавления этих фрагментов (это простопример)
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val fragOne = FragmentOne()
supportFragmentManager.beginTransaction().add(R.id.layout_fragment_one, fragOne).commit()
val fragTwo = FragmentTwo()
supportFragmentManager.beginTransaction().add(R.id.layout_fragment_two, fragTwo).commit()
fragOne.listener = fragTwo
}
}