下面要提到的是我要使用参数将数据从片段发送到片段。
此处是使用参数发送到片段的按钮点击数据
//sender fragment
view.btnjavafragment.setOnClickListener {
newInstance("helllo")
}
companion object {
@JvmStatic
fun newInstance(mystring:String) = javaFragment().apply {
arguments = Bundle().apply {
putString("sentdata",mystring)
if(arguments!=null){
Toast.makeText(context,"data sent",Toast.LENGTH_SHORT).show()
}
}
}
}
//receiving fragment
override fun onAttach(context: Context?) {
super.onAttach(context)
arguments?.getString("sentdata","")?.let {
string = it
tvdatamessage.setText(string)
}
}
答案 0 :(得分:2)
嗨,请点击以下链接获取解决方案。
https://www.journaldev.com/14207/android-passing-data-between-fragments
您还可以将“导航图”用于“片段事务”,并直接发送捆绑中的任何类型的数据以将其发送,如下所示。
var nameBundle = Bundle()
nameBundle.putString("youKey", edtName.text.toString())
it.findNavController().navigate(R.id.tofragmentName, nameBundle)
答案 1 :(得分:0)
不建议两个片段直接通信。在此处查看文档和示例。 https://developer.android.com/training/basics/fragments/communicating
我会推荐一个通用的ViewModel并观察那里的变化。
答案 2 :(得分:0)
您可以使用Jetpack上导航组件中的SafeArgs。 Here,您有一个不错的Google教程。