我已经使用默认实现覆盖了Fragment类的onCreateAnimation方法,这导致了FATAL EXCEPTION . 为什么?
java.lang.RuntimeException:无法启动活动ComponentInfo {com.developer.pocviewmodel / com.developer.pocviewmodel.MainActivity}:java.lang.IllegalStateException:super.onCreateAnimation(transit,enter,nextAnim)不能为null
class MainFragment : Fragment() {
companion object {
fun newInstance() = MainFragment()
}
private lateinit var viewModel: MainViewModel
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View {
return inflater.inflate(R.layout.main_fragment, container, false)
}
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
viewModel = ViewModelProviders.of(this).get(MainViewModel::class.java)
// TODO: Use the ViewModel
}
override fun onCreateAnimation(transit: Int, enter: Boolean, nextAnim: Int): Animation {
return super.onCreateAnimation(transit, enter, nextAnim)
}
}
1 回答
当@NotNull参数或变量为null时,或者@NotNull函数返回null时,抛出
java.lang.IllegalStateException : must not be null
.onCreateAnimation
默认返回null .如果您反编译您的类,您将看到该函数的Java版本:
onCreateAnimation
返回null,因此抛出异常,因为返回值标记为@NotNull . 重写方法并返回非null,或将返回类型更改为Animation?
. 但既然你不必覆盖它,它就不是抽象的 .对于记录,如果您使返回类型为可空,则这是反编译的Java代码: