一、Fragment向Activity传递数据
Fragment中定义一个内部回调接口,再让包含这个Fragment的Activity实现这个接口。代码如下:
Fragment:
class FragmentA : Fragment(){
interface SendListener{
fun sendData(data : String)
}
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val view = inflater.inflate(R.layout.fragment_a,container,false)
return view
}
override fun onAttach(context: Context) {
super.onAttach(context)
val Mactivity = context as MainActivity
Mactivity.sendData("从fragment来的数据")
}
}
SendListener是回调接口,里面只定义了一个函数用来发送数据,因为数据需发送到MainActivity中,所以在onAttach中需要先获得MainActivity的对象,as的作用就是强制转换,将context强制转换成MainActivity。
MianActivity:
class MainActivity : AppCompatActivity(),FragmentA.SendListener {
private lateinit var Gdata: String
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
Log.d("MainActivity1111","传递来的数据是---$Gdata")
}
override fun sendData(data: String) {