kotlin安卓開發:fragment向activity傳遞資料通過handler,設定回撥方法
阿新 • • 發佈:2018-11-30
從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()
}···
接收到下標後,通知介面卡更新。