Kotlin - 为WebView全局定义变量

Pra*_*kro 13 android webview kotlin

我正在尝试定义一个全局变量,它是WebView类.在Android Java中,通过编写它可以轻松完成

用于全局变量的Java

 < ClassName > < variableName >
Run Code Online (Sandbox Code Playgroud)

但在Kotlin,我面临着宣言的问题.


class MainActivity : AppCompatActivity() {

var mywebview : WebView //<- This shows Property must be initialized or be abstract



override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
}

override fun onStart() {
    super.onStart()

    mywebview = findViewById(R.id.webViewGyrix) as WebView

    mywebview.setWebViewClient(object : WebViewClient() {
        override fun shouldOverrideUrlLoading(view: WebView?, url: String?): Boolean {
            view?.loadUrl(url);
            return true
        }
    } )
    mywebview.loadUrl("http://www.example.com/")
}
Run Code Online (Sandbox Code Playgroud)

小智 27

您可以使用延迟初始化 - 您不必使WebView可以为空

lateinit var webView: WebView
Run Code Online (Sandbox Code Playgroud)


Mar*_*ski 18

这表明Property必须初始化或是抽象的

然后初始化它即到null.这不是最终值,您可以在以后更改它:

var mywebview : WebView? = null
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用Kotlin的lateinit功能,mywebview如果不需要,可以防止可以为空:

lateinit var webView: WebView
Run Code Online (Sandbox Code Playgroud)