サポートライブラリをv-26.1.0からv-27.0.0に更新した後、フラグメントに複数のエラーがあります。
これらのエラーのリストを次に示します。
エラー:「バンドル」へのスマートキャストは不可能です。「引数」は変更可能なプロパティであり、この時点で変更されている可能性があるためです。
エラー: 'onCreateView'は何もオーバーライドしません
エラー: 'onViewCreated'は何もオーバーライドしません
エラー:タイプの不一致:推定タイプはビューですか?しかし、ビューが期待されていました
エラー:型の不一致:推定型はコンテキストですか?しかし、コンテキストが期待されていました
エラー:型の不一致:推定型はFragmentActivityですか?しかし、コンテキストが期待されていました
エラー:型の不一致:推定型はFragmentActivityですか?しかし、コンテキストが期待されていました
from Android空のフラグメントのためのスタジオのテンプレート。
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)
}
これらすべてのエラーの根本的な原因は、サポートライブラリv-27.0.0に@Nullable
および@NonNull
annotationsが追加されたことです。
およびkotlin言語はヌル可能性を認識しており、Javaとは異なり、Nullable
およびNonNull
に対して異なる型を持っているためです。
これらの注釈がなければ、コンパイラはそれらを区別する方法がなく、Androidスタジオは正しいタイプを推測するために最善を尽くしていました。
TL; DR:nullabilityステータスを正しく反映するようにタイプを変更します。
エラー:「バンドル」へのスマートキャストは不可能です。「引数」はこの時点で変更可能な変更可能なプロパティであるためです。
変更arguments.getString(ARG_NAME)
==> arguments?.getString(ARG_NAME) ?: ""
エラー: 'onCreateView'は何もオーバーライドしません
チェイン:
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
にも同じことが当てはまります。
それ以外の場合は、何らかのメソッドの呼び出しに使用され、getContext().someMethod()
をgetContext()?.someMethod()
に置き換えます
同じことがkotlinショートバージョンcontext?.someMethod()
にも当てはまります。
エラー:型の不一致:推定型はFragmentActivityですか?しかし、コンテキストが期待されていました
前のエラーの修正を使用してください。