【发布时间】:2019-12-17 22:19:33
【问题描述】:
我可以用繁琐的方法来解决它,所以如果您不发布解决方法而是记录解决方案,我将不胜感激。
我正在尝试将以下代码 sn-p 添加到片段的 onCreateView() 中,但是“感谢”安全调用(或我的代码设计)事情变得复杂了。 AfterTabLayoutMediator(activity 部分 Kotlin 显示在 activity 之后添加安全调用 (?.) 的警告(相当于 Java 中的 getActivity),可能是 null。
尝试任何解决方案之前的原始代码sn-p
TabLayoutMediator(activity.findViewById(R.id.tabs), view.findViewById(R.id.view_pager),
TabLayoutMediator.OnConfigureTabCallback { tab, position ->
// Styling each tab here
tab.text = mValueHeadlineCategoryList[position]
}).attach()
1) 尝试通过添加
safe call解决(失败)
现在添加安全调用违反了TabLayoutMediator 输入参数,我在TabLayoutMediator 上收到type mismatch Required:TabLayout Found:TabLayout? 警告。
TabLayoutMediator(activity?.findViewById(R.id.tabs), view.findViewById(R.id.view_pager),
TabLayoutMediator.OnConfigureTabCallback { tab, position ->
tab.text = mValueHeadlineCategoryList[position]
}).attach()
2) 尝试在
safe call之前通过空检查来解决(失败)
添加空检查,但现在 Kotlin 会在 TabLayoutMediator(activity 部分显示为 Smart cast to 'FragmentActivity' is impossible, because 'activity' is a property that has open or custom gette 的警告
if (activity != null) {
TabLayoutMediator(activity.findViewById(R.id.tabs), view.findViewById(R.id.view_pager),
TabLayoutMediator.OnConfigureTabCallback { tab, position ->
tab.text = mValueHeadlineCategoryList[position]
}).attach()
}
【问题讨论】:
标签: android kotlin kotlin-null-safety