将支持库更新到27.0.0后,我的片段中出现多个错误

时间:2017-10-30 13:46:58

标签: android android-fragments kotlin android-support-library

将支持库从v-26.1.0更新到v-27.0.0我的片段中出现多个错误。

这里列出了一些错误:

  

错误:智能投射到'捆绑'是不可能的,因为'论证'是一个   这个时候本可以改变的可变属性。

     

错误:' onCreateView'没有任何内容

     

错误:' onViewCreated'没有任何内容

     

错误:类型不匹配:推断类型是View?但是查看了   预期

     

错误:类型不匹配:推断类型是上下文?但是上下文   预计

     

错误:类型不匹配:推断类型是FragmentActivity?但   预期上下文

     

错误:类型不匹配:推断类型是FragmentActivity?但   预期上下文

来自android studio的空片段模板。

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    if (arguments != null) {
        mParam1 = arguments.getString(ARG_PARAM1)
        mParam2 = arguments.getString(ARG_PARAM2)
    }
}

override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? {
    return inflater!!.inflate(R.layout.fragment_blank, container, false)
}

override fun onViewCreated(view: View?, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)
}

1 个答案:

答案 0 :(得分:38)

所有这些错误的根本原因是在支持库v-27.0.0中添加了@Nullable@NonNull注释。
并且由于kotlin语言意识到可空性,并且与NullableNonNull具有不同的类型,与Java不同。
没有这些注释,编译器无法区分它们,Android工作室正在尽力推断出正确的类型。

TL; DR:更改类型以正确反映可空性状态。

  

错误:智能投射到'捆绑'是不可能的,因为'论证'是一个   这个时候本可以改变的可变属性。

更改arguments.getString(ARG_NAME) ==> arguments?.getString(ARG_NAME) ?: ""

  

错误:' onCreateView'没有任何内容

chane:

override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View?

==>

override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View?
  

错误:' onViewCreated'没有任何内容

变化:

override fun onViewCreated(view: View?, savedInstanceState: Bundle?)

==>

override fun onViewCreated(view: View, savedInstanceState: Bundle?)
  

错误:类型不匹配:推断类型是上下文?但是上下文   预计

如果将上下文作为参数传递给方法,只需使用快速修复将getContext()替换为getContext()?.let{}
这同样适用于kotlin短版context

else if用于调用某个方法将getContext().someMethod()替换为getContext()?.someMethod()

同样适用于kotlin短版context?.someMethod()

  

错误:类型不匹配:推断类型是FragmentActivity?但   预期上下文

使用上一个错误的修复程序。