android - 使用不可为空的片段管理器
问题描述
我想TabLayout
在我的片段中显示我的,但他想要 nullable supportFragmentManager
:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val fragmentAdapter = MyPagerAdapter(activity?.supportFragmentManager)
viewpager_main.adapter = fragmentAdapter
tabs_main.setupWithViewPager(viewpager_main)
}
这是我的适配器:
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager
import androidx.fragment.app.FragmentPagerAdapter
import com.mandarine.targetList.features.targets.list.TargetsFragment
class MyPagerAdapter(fm: FragmentManager) : FragmentPagerAdapter(fm) {
override fun getItem(position: Int): Fragment {
return when (position) {
0 -> {
TargetsFragment()
}
1 -> SecondFragment()
else -> {
return FirstFragment()
}
}
}
override fun getCount(): Int {
return 3
}
override fun getPageTitle(position: Int): CharSequence {
return when (position) {
0 -> "First Tab"
1 -> "Second Tab"
else -> {
return "Third Tab"
}
}
}
}
我怎样才能重写我的val?
val fragmentAdapter = activity?.supportFragmentManager?.let { MyPagerAdapter(it) }
java.lang.IllegalStateException:viewpager_main 不能为空
也FragmentPagerAdapter
被弃用了,mb需要使用smth new吗?
解决方案
getActivity() 可以在您的片段处于准备过程中并且即将准备好时为空。通常这发生在 OnCreate 中,而在 OnViewCreated 中,视图已经生成并且活动在这里永远不会为空
在 onViewCreated 中分配 viewpager 适配器
全局定义两者以在类中的任何位置使用它
private lateinit var viewpager_main: ViewPager
private lateinit var myPagerAdapter :MyPagerAdapter
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
viewpager_main= view.findViewById(R.id.viewpager_main)
myPagerAdapter = MyPagerAdapter(activity!!.supportFragmentManager)
}
尝试这个
检查以了解!和 ?在 kotlin 之间的区别!!和 ?在科特林
推荐阅读
- javascript - 如何在 findOneAndUpdate 中使用 async-await
- python - 无法使用 BeautifulSoup 抓取图像 url
- python - 使用Opencv c ++在图像中查找小圆圈
- php - WordPress - 按最后日期更新获取帖子
- cv2 - 系统错误:
返回带有错误集的结果 - quarkus - Quarkus:在执行新的 YML 之前是否需要删除部署 kubernetes 组件
- node.js - 如何通过推送数组在 Mongoose 中建立一对多关系?
- numpy - 在 numpy 中为 2D 数组查找 2 个掩码之间的剩余掩码
- python - 安装构建依赖项...使用 pip 安装 pyInstaller 时出错
- java - 找不到符号:方法 findViewByID(int)