kotlin安卓开发:fragment向activity传递数据通过handler,设置回调方法
从activity向fragment传递就比较方便了,直接用:
fg.arguments = arguments
现在看看怎么从fragment向activity传递数据。
比如说,我们在一个ViewPage里面设置了若干个fragment,fragment里面有一个按钮,提交相关当前fg下标给viewPage所在的activity,删除当前的fg。
这里使用了handler,提交完信息,activity就立即更新UI
首先我们在fg中写一个接口
interface Callbacks{
fun onRemove(position:Int){
}
}
让我们的activity实现该接口:如果未实现,则抛出异常,这里在fg中有一个attach方法,是载入fg时候自动调用的。
override fun onAttach(context: Context?) {
if(context !is Callbacks){
throw IllegalStateException("接口未实现")
}
super.onAttach(context)
mcallbacks = context
}
然后我们在给fg的按钮添加监听器,调用该方法。
mcallbacks!!.onRemove(position)
现在是空的方法。
我们在activity给它实现以下:
这里我们看到接收来自fg的下标。
这里接收fg传过来的下标。
在主活动的handler可以接收下标
//主活动继承接口,实现回调方法
override fun onRemove(position:Int) {
val msg = Message()
msg.what = 1
msg.arg1 = position
handle?.sendMessage(msg)
Log.d("callback:",msg.what.toString())
}
看看主活动的handler:接收是msg.what的值。
···1->{
list_fg.removeAt(msg.arg1)
Log.d("msg:",msg.arg1.toString())
iwh_view_page_adapter.notifyDataSetChanged()
}···
接收到下标后,通知适配器更新。