[英]override onCreateAnimation FATAL EXCEPTION to java.lang.IllegalStateException : must not be null
我已經使用默認實現覆蓋了Fragment類的onCreateAnimation方法,這導致FATAL EXCEPTION。 為什么?
java.lang.RuntimeException:無法啟動活動ComponentInfo {com.developer.pocviewmodel / com.developer.pocviewmodel.MainActivity}:java.lang.IllegalStateException:super.onCreateAnimation(傳遞,輸入,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)
}
}
java.lang.IllegalStateException : must not be null
當@NotNull參數或變量為null或@NotNull函數返回null時,將引發java.lang.IllegalStateException : must not be null
的異常。 默認情況下, onCreateAnimation
返回null。
如果您對類進行反編譯,則會看到該函數的Java版本:
@NotNull
public Animation onCreateAnimation(int transit, boolean enter, int nextAnim) {
Animation var10000 = super.onCreateAnimation(transit, enter, nextAnim);
Intrinsics.checkExpressionValueIsNotNull(var10000, "super.onCreateAnimation(transit, enter, nextAnim)");
return var10000;
}
onCreateAnimation
返回null並因此引發異常,因為返回值被標記為@NotNull。 重寫方法並返回非null,還是將返回類型更改為Animation?
。 但是由於您不對其進行任何操作,因此可以將其完全刪除。 您不必重寫它,它不是抽象的。
作為記錄,如果使返回類型可為空,則這是反編譯的Java代碼:
@Nullable
public Animation onCreateAnimation(int transit, boolean enter, int nextAnim) {
return super.onCreateAnimation(transit, enter, nextAnim);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.