Fragment好Activity之间的数据交换(传值)
程序员文章站
2022-03-30 09:01:10
...
1、Activity把数据传递给Fragment
有时候从Activity跳转到fragment时需要传递参数,可以使用bundle的方式传递
Activity中代码
private fun initView() {
fragments = ArrayList()
if (fragments!!.isEmpty()) {
fragments!!.add(MineRelationDiscoverFragment().newInstance(userId, imgUrl!!))
fragments!!.add(MineRelationQuestionFragment().newInstance(userId, imgUrl!!))
}
view_pager.adapter = FragmentPagerAdapter(supportFragmentManager, fragments!!, titles)
view_pager.offscreenPageLimit = 2
tab.tabMode = TabLayout.MODE_FIXED
tab.tabGravity = TabLayout.GRAVITY_FILL
tab.run { setupWithViewPager(view_pager) }
}
fragment中代码
fun newInstance(userId: Int, imgUrl: String): MineRelationDiscoverFragment {
val frag = MineRelationDiscoverFragment()
val bundle = Bundle()
bundle.putInt("userId", userId)
bundle.putString("imgUrl", imgUrl)
frag.arguments = bundle
return frag
}
//取参数 onViewCreated()方法中
override fun initEnv() {
userId = arguments!!.getInt("userId")
imgUrl = arguments!!.getString("imgUrl")
if (!EventBus.getDefault().isRegistered(this)) {
EventBus.getDefault().register(this)
}
super.initEnv()
}
2、Fragment传递参数给Activity
使用接口回调的方式传递给Activity
Fragment代码
private var myListener: MineDiscoverListener? = null
override fun onAttach(context: Context?) {
super.onAttach(context)
myListener = activity as MineDiscoverListener
}
interface MineDiscoverListener {
fun sendDiscoverIds(idList: List<Int>)
}
参考:陈李冠
推荐阅读
-
Fragment和Activity之间传值的方法
-
Android 多个Activity之间的传值
-
C#-Xamarin的Activity传值与Fragment引用
-
Android 入门第十讲02-广播(广播概述,使用方法(系统广播,自定义广播,两个activity之间的交互和传值),EventBus使用方法,数据传递,线程切换,Android的系统广播大全)
-
Activity与Fragment之间的相互传值
-
Activity与Activity,Activity与Fragment,Fragment 与 Fragment之间值的传递
-
Fragment和Activity之间传值的方法
-
C#-Xamarin的Activity传值与Fragment引用
-
Fragment好Activity之间的数据交换(传值)
-
Android Activity与Fragment之间的传值概述