我想从片段发送数据

时间:2019-07-02 10:40:24

标签: android android-fragments kotlin fragment

下面要提到的是我要使用参数将数据从片段发送到片段。

此处是使用参数发送到片段的按钮点击数据

//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)
        }
    }

3 个答案:

答案 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教程。