kotlinアンドロイド開発:fragmentがactivityにデータをhandlerで伝達し、コールバック方法を設定する
1568 ワード
Activityからfragmentへの転送が便利で、直接使用します.
fragmentからactivityにデータを渡す方法を見てみましょう.
たとえば、ViewPageにはいくつかのfragmentが設定されています.fragmentには、viewPageが存在するactivityに関連する現在のfgの下にマークされているボタンがあり、現在のfgを削除します.
ここではhandlerを使用して情報をコミットするとactivityはすぐにUIを更新します
まずfgにインタフェースを書きます
インタフェースをactivityで実装しましょう.実装されていない場合は、例外が投げ出されます.ここで、fgにロードするときに自動的に呼び出されるattachメソッドがあります.
次に、fgのボタンにリスナーを追加し、このメソッドを呼び出します.
今は空いている方法です.
私たちはactivityで以下を実現します.
ここでは、fgからの下付きスケールを受信することを示します.
ここでfgから渡された下付き文字を受信します.
メインアクティブなhandlerでは下付き文字を受信できます
メインアクティビティのhandlerを見てください:受信はmsgです.whatの値.
下付き文字を受信したら、アダプタの更新を通知します.
fg.arguments = arguments
fragmentからactivityにデータを渡す方法を見てみましょう.
たとえば、ViewPageにはいくつかのfragmentが設定されています.fragmentには、viewPageが存在するactivityに関連する現在のfgの下にマークされているボタンがあり、現在のfgを削除します.
ここではhandlerを使用して情報をコミットするとactivityはすぐにUIを更新します
まずfgにインタフェースを書きます
interface Callbacks{
fun onRemove(position:Int){
}
}
インタフェースをactivityで実装しましょう.実装されていない場合は、例外が投げ出されます.ここで、fgにロードするときに自動的に呼び出されるattachメソッドがあります.
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()
}···
下付き文字を受信したら、アダプタの更新を通知します.