国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 兴和县| 新和县| 静安区| 广丰县| 保山市| 庆云县| 平泉县| 德清县| 永修县| 威远县| 阜平县| 敖汉旗| 连江县| 台北市| 博湖县| 武鸣县| 方城县| 汤阴县| 青浦区| 长乐市| 贺兰县| 瑞金市| 泰安市| 且末县| 科技| 永济市| 方正县| 平乐县| 宝山区| 阿拉尔市| 穆棱市| 馆陶县| 贵南县| 黄陵县| 紫金县| 抚远县| 兴隆县| 抚宁县| 罗城| 旬阳县| 台中县|