要从一个ViewPager的基础Fragment中将数据传递给其中一个标签Fragment,可以使用Bundle来传递数据。以下是一个使用Kotlin的示例代码:
在基础Fragment中,创建一个伴生对象来创建Bundle,并将数据添加到Bundle中:
class BaseFragment : Fragment() {
companion object {
fun newInstance(data: String): BaseFragment {
val fragment = BaseFragment()
val bundle = Bundle()
bundle.putString("data", data)
fragment.arguments = bundle
return fragment
}
}
// ... 省略其他代码 ...
}
在标签Fragment中,可以通过arguments获取传递过来的数据:
class TabFragment : Fragment() {
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
// ... 省略其他代码 ...
val data = arguments?.getString("data")
// 使用传递过来的数据
// ... 省略其他代码 ...
return view
}
}
在ViewPager的适配器中,使用newInstance方法创建基础Fragment的实例,并将数据传递给它:
class ViewPagerAdapter(fm: FragmentManager) : FragmentPagerAdapter(fm) {
override fun getItem(position: Int): Fragment {
return when (position) {
0 -> BaseFragment.newInstance("数据1")
1 -> BaseFragment.newInstance("数据2")
else -> BaseFragment.newInstance("数据3")
}
}
override fun getCount(): Int {
return 3
}
}
这样,每个标签Fragment都可以通过arguments获取传递过来的数据。