自从我将项目更新到SDK版本27和gradle插件支持库版本27.0.0
之后,我需要改变我的代码。
在26.1.0
中,我可以在我的Fragment
(android.support.v4.app
)中使用getContext()
(与Kotlin的context
一起使用),并且没有空指针问题,但是由于我使用Kotlin,在版本27.0.0
中出现了问题,所有的context
调用都不能正常工作,我需要一个安全操作符,如context!!
,但由于我个人认为每次都这么做很麻烦,所以我只是自己创建了一个解决方法。
override fun getContext() = super.getContext()!!
另一件事情突然发生了变化(这也是我询问的原因),就是方法onCreateView()
和onViewCreated()
。在onCreateView
中,填充器不可能为空,所以我需要更改我的函数签名才能正确地从onCreateView(inflater: LayoutInflater?...)
重写为onCreateView(inflater: LayoutInflater...)
,并且对于onViewCreated
中的createdView
参数也是同样的处理。现在我想知道,特别是为什么(对于Kotlin来说)非常丑陋的getContext()
的更改被做出,并前往https://developer.android.com/sdk/support_api_diff/27.0.0/changes.html。
但是等等,显然他们没有改变它?那么现在我的问题是,如果我做错了什么,还是他们真的改变了,如果是这样,我可能会问他们为什么?
顺便说一句,对于getActivity()
也是同样的情况,我认为添加了mHost == null
检查,而getActivity
方法甚至是final的,所以我不能在那里使用我的解决方法,这使它非常丑陋。实际上,在源文件中,这些方法看起来是相同的,但是26.1.0
具有Kotlin返回类型Context!
,而27.0.0
具有返回类型Context?
。