Kotlin 第三講 :實戰第一課-變數的宣告
阿新 • • 發佈:2019-01-10
背景:
最近google動作比較大,
1.Flutter釋出了beta版本
2.Dart語言再次成為大家討論的熱點
從整個的背景來看,google想要做的一件事情就是統一一種可以在任何平臺上都可以使用的語言,無論是Dart還是Kotlin其實都是這個趨勢,雖然很難但憑藉Google在行業內的影響力,未必沒有辦法實現,有時間我會將整個Dart的發展歷史與大家介紹一下,大家就知道google在這件事上有多麼上心了,可以用屢戰屢敗,屢敗屢戰來形容。
下面回到kotlin語言,最近決定在寫demo的時候,都遷移到kotlin來開發,
第一是為了可以更加熟悉kotlin
第二這樣花費的代價最小
在Android中我們在使用的時候,程式碼是這樣的
WebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webView = (WebView) findViewById(R.id.webView);
}
直接轉換到kotlin是這樣的
var webView:WebView protected fun onCreate(savedInstanceState:Bundle) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) webView = findViewById(R.id.webView) as WebView }
程式碼拷貝過去之後,發現無法執行。
1.在第一行顯示:
Property must be initialized or abstract
所以我們有兩種方法
1.var webView:WebView ?= null
2.lateinit var webview:WebView
1.一個是允許為null 2.稍後初始化
webView = findViewById(R.id.webView) as WebView
這段程式碼也是會報錯的,意思是無法判斷型別,所以我們需要指定一下型別
webview = findViewById<WebView>(R.id.webView)
所以全部程式碼改造完成之後如下:
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.webkit.WebView
class MainActivity : AppCompatActivity() {
lateinit var webview:WebView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
webview = findViewById<WebView>(R.id.webView)
}
}