Kotlin – Определить переменную глобально для WebView

Я пытаюсь определить переменную глобально, которая относится к классу WebView. В Android Java это легко сделать, написав его

Java для глобальной переменной

< ClassName > < variableName > 

Но в Котлине я сталкиваюсь с проблемой с ее заявлением.


 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/") } 

Это показывает, что свойство должно быть инициализировано или абстрактно

Затем инициализируйте его, т.е. null . Это не окончательное значение, и вы сможете изменить его позже:

 var mywebview : WebView? = null; 

Вы можете использовать позднюю инициализацию – вам не нужно делать WebView с нулевым значением

 lateinit var webView: WebView 

для глобальной переменной это означает, что это не должно быть переопределено случайно, поэтому вы должны вместо этого использовать lazyload, используя kotlin's lazy, которые создают переменную при первом вызове, другие вызовы будут просто ссылаться на ленивую загруженную переменную

 private val webview:WebView by lazy{ findViewById<WebView>(R.id.webview) } 

Это должно быть сделано до метода onCreate

Ниже код работал для меня:

 val mywebviewURL = "https://www.google.com" override fun onStart() { super.onStart() events_webview.setWebViewClient(object : WebViewClient() { override fun shouldOverrideUrlLoading(view: WebView?, url: String?): Boolean { view?.loadUrl(url); return true } }) events_webview.loadUrl(mywebviewURL) } 

Добавить разрешение для Интернета в AndroidManifest.xml

 <uses-permission android:name="android.permission.INTERNET"/> 
Intereting Posts
Является ли var str: String изменчивым или неизменяемым? Как слить два набора перечислений в kotlin с одним и тем же родительским интерфейсом? Универсальный расширяемый класс AND реализует интерфейс в Kotlin Что такое «приемник» в Котлине? Как реализовать репозиторий интерфейса в другом модуле проекта в AndroidStudio с помощью Dagger2 и Kotlin Почему небезопасный вызов .run () отлично работает при нулевом значении в Котлин? вызов API AsyncTask Kotlin: "val someVar = if (xx) 1 else 1.0", почему someVar является "Any"? функция kotlin, возвращающая нуль Класс данных Kotlin для RealmObject Получить N последних объектов, испускаемых наблюдаемыми в RxJava2 Как проверить, была ли инициализирована переменная «lateinit»? Есть ли лучший способ получить доступ к свойствам с возможностью NULL? Kotlin: Как преобразовать список в список со списком? Конструктор класса данных с двумя разными конструкторами в Котлине