国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

android代碼轉(zhuǎn)換成Kotlin時(shí),未初始化變量報(bào)錯(cuò)

2024-07-21 23:03:38
字體:
供稿:網(wǎng)友

android 代碼轉(zhuǎn)換成Kotlin代碼時(shí),有些在Android中定義的未初始化變量,會(huì)在轉(zhuǎn)成Kotlin代碼時(shí)報(bào)Property must be initialized or be abstract錯(cuò)誤。這是由于Kotlin的語法規(guī)范所致,kotlin的變量一般需要在定義的時(shí)候就進(jìn)行賦值。如果非要定義時(shí)不賦值,就需要使用kotlin的lateinit修飾符修飾定義的變量,以指定其將在稍后賦值。但目前Android Studio 2.3自帶的Java代碼轉(zhuǎn)Kotlin代碼的功能,并沒有針對(duì)此種變量做處理,導(dǎo)致直接轉(zhuǎn)換會(huì)報(bào)錯(cuò)。

方法/步驟

1、一般的activity是這樣的,定義個(gè)輸入框變量

android代碼,Kotlin,變量報(bào)錯(cuò)

2、通過 Code→Convert Java File to Kotlin File 或者快捷鍵 Ctrl+Alt+Shift+K將Java代碼轉(zhuǎn)換成Kotlin代碼

android代碼,Kotlin,變量報(bào)錯(cuò)

3、Java代碼成功轉(zhuǎn)換成了Kotlin代碼,但定義的輸入框變量卻報(bào)錯(cuò)了。查看錯(cuò)誤信息是

Property must be initialized or be abstract。

android代碼,Kotlin,變量報(bào)錯(cuò)

4、也就是說Kotlin中定義的變量,要么是定義時(shí)就初始化,要么就定義成抽象的。但顯然這里不能定義成抽象的,那就試著直接初始化。

android代碼,Kotlin,變量報(bào)錯(cuò)

5、初始化后,果然不再報(bào)錯(cuò)。那就直接運(yùn)行,卻發(fā)現(xiàn)App直接停止運(yùn)行了。查看錯(cuò)誤日志,

android代碼,Kotlin,變量報(bào)錯(cuò)

6、很顯然,我在初始化控件時(shí),Context還沒初始化,導(dǎo)致了空指針異常。說明定義控件時(shí)就初始化不能解決剛才Kotlin報(bào)的錯(cuò)誤。

幾番查閱Kotlin語法、搜索資料后,才發(fā)現(xiàn),Kotlin有一個(gè)lateinit修飾符。字面意思就可以知道它是表名變量需要在定義后才賦值的。

使用 lateinit修飾后,就可以愉快地玩耍了。

android代碼,Kotlin,變量報(bào)錯(cuò)

 

VeVb提示:

Android Studio 3.0后自帶Kotlin,無需安裝插件

經(jīng)驗(yàn)基于Android Studio 2.3,3.0以后可能與此有出入


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到kotlin教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 林西县| 远安县| 秀山| 汤阴县| 海晏县| 黄大仙区| 江阴市| 昌吉市| 安化县| 大悟县| 康马县| 宕昌县| 讷河市| 大兴区| 广平县| 射阳县| 临泽县| 平凉市| 道孚县| 宁化县| 阿城市| 铜川市| 兴化市| 新化县| 台湾省| 瓮安县| 巴彦淖尔市| 平邑县| 罗源县| 南部县| 苏尼特左旗| 秭归县| 闸北区| 台州市| 呼伦贝尔市| 绩溪县| 富平县| 陈巴尔虎旗| 田东县| 安福县| 黎平县|