如何解决TabLayout-如何仅在按Tab时加载片段
我正在使用带有TabLayout的ViewPager。选项卡之一是ArFragment。 当Activity启动时,TabLayout会迭代每个选项卡并对其进行初始化,即使未按下适当的选项卡,也会导致ArFragment请求摄像机许可。
经过广泛的搜索,我得出的结论是SceneForm不允许控制摄像机许可请求的时间,因此唯一的选择是控制标签的加载时间。
如何使TabLayout不在初始化时加载特定的标签(但在此之后更改标签时仍要记住它是实例)?
关于眼前的事情: 我尝试使用addOnTabSelectedListener,但不确定如何继续使用它:
tabs.addOnTabSelectedListener(object :
TabLayout.ViewPagerOnTabSelectedListener(viewPager) {
override fun onTabReselected(tab: TabLayout.Tab) {
when(tab.position) {
// First Tab
0 -> return
// AR
1 -> // I want to create a new ARFragment() and inflate it to this tab's fragment container. But how?
}
}
})
有什么建议吗?
解决方法
class ArFragment : ... {
override fun onCreateView(
inflater: LayoutInflater,container: ViewGroup?,savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_ar,container,false)
}
ovveride fun onResume() {
// init variables
// init views
}
}
class MyViewPagerAdapter(private val context: Context,fm: FragmentManager,private val noOfTabs: Int) : FragmentPagerAdapter(fm,BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT) {
.......
.......
}
在片段的onResume()
中执行所有与片段相关的工作,并确保使用FragmetnPagerAdapter
扩展ViewPager适配器类中的behavior=BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT
。您可以检查上面的代码段。
让我知道您是否遇到任何问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。