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()
                    }···

 接收到下标后,通知适配器更新。

 

你可能感兴趣的:(Kotlin笔记,Kotlin安卓开发)