我试图将数据从 Parent Activity 传递给viewPager
,我找到了一个使用findFragmentByTag
但它返回 Null 的解决方案,我不确定我错过了什么。
我发现的示例使用了已弃用的示例FragmentPagerAdapter
,我想这可能就是我的实现不起作用的原因,所以我正在寻找前进的道路。
(supportFragmentManager.findFragmentByTag(tag) as StopwatchFragment?)?.displayData(
min!!,
sec!!,
millis!!
)
一片空白
主要活动
class MainActivity : AppCompatActivity(), StopwatchListener {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
...
binding.viewPagerMain.adapter = PageAdapter(supportFragmentManager, lifecycle)
}
...
override fun getTheTime(min: String?, sec: String?, millis: String?) {
val tag =
"android:switcher:" + R.id.view_pager_main.toString() + ":" + binding.viewPagerMain.currentItem
Log.d("Main", tag)
(supportFragmentManager.findFragmentByTag(tag) as StopwatchFragment?)?.displayData(
min!!,
sec!!,
millis!!
)
}
}
页面适配器
class PageAdapter(fragmentManager: FragmentManager, lifecycle: Lifecycle) :
FragmentStateAdapter(fragmentManager, lifecycle) {
override fun getItemCount() = 3
override fun createFragment(position: Int): Fragment {
return when (position) {
0 -> {
RepsFragment()
}
1 -> {
StopwatchFragment()
}
2 -> {
TimerFragment()
}
else -> {
RepsFragment()
}
}
}
}