首先,在 navigateUp 的方法中手动获取 EditText 的文本,然后执行相应操作。
在目标 Fragment 中,使用以下代码获取 EditText 的文本:
val etText = view?.findViewById(R.id.et_text)
val text = etText?.text.toString().trim()
然后,在 navigateUp 方法中创建一个 Bundle 对象,将 EditText 的文本存储到其中,并将其作为参数传递给目标 Fragment:
override fun onSupportNavigateUp(): Boolean {
val navController = Navigation.findNavController(this, R.id.nav_host)
val etText = view?.findViewById(R.id.et_text)
val text = etText?.text.toString().trim()
val bundle = Bundle()
bundle.putString("text", text)
navController.navigate(R.id.action_dest_fragment_to_source_fragment, bundle)
return true
}
最后,在目标 Fragment 中读取 Bundle 中的文本,并将其设置为 EditText 的文本,并触发 addTextChangedListener:
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val etText = view.findViewById(R.id.et_text)
val text = arguments?.getString("text")
etText.setText(text)
etText.addTextChangedListener(object : TextWatcher {
override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
}
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
}
override fun afterTextChanged(s: Editable?) {
// do something
}
})
}