版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010479969/article/details/79468883
背景:
最近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)
}
}