以防其他人出现并想知道如何解决这个问题。我通过将对话框片段 (FragmentNewTrips) 类传递给 viewpager,然后进入我将其设置为侦听器的子片段来解决这个问题。
所以,当我定义适配器时,我传递了作为对话片段的侦听器
AdapterPagerTrips(childFragmentManager, tripIds, this)
然后在适配器中,我将对话框片段类传递给需要它的相应片段
class AdapterPagerTrips (fragmentManager: FragmentManager, val tripIds: ArrayList<String?>,
val listener: FragmentNewTrips):FragmentStatePagerAdapter(fragmentManager,BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT) {
// 2
override fun getItem(position: Int): Fragment {
if (position == 0) return FragmentNewTripsTypes.newInstance(listener)
return FragmentNewTripsResults.newInstance(tripIds, listener)
}
// 3
override fun getCount(): Int {
return 2
}
}
每个片段都有一个可以设置监听器的伴生对象
companion object {
fun newInstance(tripIds: ArrayList<String?>, listener: FragmentNewTrips) = FragmentNewTripsResults().apply {
arguments = Bundle().apply { putStringArrayList(TRIPIDS, tripIds) }
this.listener = listener
}
}