【错误记录】Android Studio 编译时 Kotlin 代码编译报错 ( 升级支持库时处理 @NonNull 参数 )
生活随笔
收集整理的這篇文章主要介紹了
【错误记录】Android Studio 编译时 Kotlin 代码编译报错 ( 升级支持库时处理 @NonNull 参数 )
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
文章目錄
- 一、報錯信息
- 二、報錯分析
- 三、解決方案
一、報錯信息
最近處理支持庫 , 將所有的支持庫都升級到了 28.0.028.0.028.0.0 ;
implementation 'com.android.support:recyclerview-v7:28.0.0'凡是 Kotlin 語言涉及到的支持庫代碼 , 出現(xiàn)了一堆報錯 ;
二、報錯分析
此處繼承了 RecyclerView.ItemDecoration 類 , 重寫了 getItemOffsets 方法 ,
注意重寫的方法中 , 參數(shù)類型
- outRect: Rect?
- view: View?
- parent: RecyclerView?
- state: RecyclerView.State?
都是可空類型 ;
查看 ItemDecoration 真實代碼 , 其中的 getItemOffsets 方法的四個參數(shù)都是非空類型 , 添加了 @NonNull 注解 , 因此這里必須傳入非空參數(shù) , 繼承時繼承為可空參數(shù) , 肯定報錯 , 參數(shù)類型不一致 ;
public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) {this.getItemOffsets(outRect, ((RecyclerView.LayoutParams)view.getLayoutParams()).getViewLayoutPosition(), parent);}ItemDecoration 完整代碼參考 :
public abstract static class ItemDecoration {public ItemDecoration() {}public void onDraw(@NonNull Canvas c, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) {this.onDraw(c, parent);}/** @deprecated */@Deprecatedpublic void onDraw(@NonNull Canvas c, @NonNull RecyclerView parent) {}public void onDrawOver(@NonNull Canvas c, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) {this.onDrawOver(c, parent);}/** @deprecated */@Deprecatedpublic void onDrawOver(@NonNull Canvas c, @NonNull RecyclerView parent) {}/** @deprecated */@Deprecatedpublic void getItemOffsets(@NonNull Rect outRect, int itemPosition, @NonNull RecyclerView parent) {outRect.set(0, 0, 0, 0);}public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) {this.getItemOffsets(outRect, ((RecyclerView.LayoutParams)view.getLayoutParams()).getViewLayoutPosition(), parent);}}三、解決方案
Google 在之前的支持庫方法的參數(shù)中 , 沒有添加 @NonNull 注解 , 在 28.0.028.0.028.0.0 版本中 , 添加了該注解 , 導(dǎo)致了繼承不兼容的情況 ;
修改方法是將所有的參數(shù)類型都設(shè)置為非空類型 , 刪除每個參數(shù)中的問號即可 ;
總結(jié)
以上是生活随笔為你收集整理的【错误记录】Android Studio 编译时 Kotlin 代码编译报错 ( 升级支持库时处理 @NonNull 参数 )的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Android 插件化】Hook 插件
- 下一篇: 【错误记录】Android Studio