Android Kotlin - WebView 显示空白页面
Android Kotlin - WebView shows blank page
我什么都试过了,还是不行。我的网络视图总是显示空白屏幕。
我的主要动机是从服务器加载pdf文件。
activity_web_view.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".activities.WebViewActivity">
<WebView
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
WebViewActivity.kt
class WebViewActivity : AppCompatActivity() {
private val url: String = "https://www.google.co.in/"
override fun onCreate(savedInstanceState: Bundle?, persistentState: PersistableBundle?) {
super.onCreate(savedInstanceState, persistentState)
setContentView(R.layout.activity_web_view)
initWebView()
setWebClient()
loadUrl(url)
}
@SuppressLint("SetJavaScriptEnabled")
private fun initWebView() {
webView.settings.javaScriptEnabled = true
webView.settings.loadWithOverviewMode = true
webView.settings.useWideViewPort = true
webView.settings.domStorageEnabled = true
webView.webViewClient = object : WebViewClient() {
override
fun onReceivedSslError(view: WebView?, handler: SslErrorHandler?, error: SslError?) {
handler?.proceed()
}
}
}
private fun setWebClient() {
webView.webChromeClient = object : WebChromeClient() {
override fun onProgressChanged(
view: WebView,
newProgress: Int
) {
super.onProgressChanged(view, newProgress)
}
}
}
private fun loadUrl(pageUrl: String) {
webView.loadUrl(pageUrl)
}
}
从 Main 调用 Activity
val intent = Intent(this, WebViewActivity::class.java)
startActivity(intent)
我不知道我做错了什么。非常感谢帮助。
提前致谢。
使用:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_web_view)
println("in webview")//--> add this to confirm this is actually called
initWebView()
setWebClient()
loadUrl(url)
}
不是你用的那个。另一个用于持久重启,在正常情况下不会被调用,您需要在清单中将 activity 标记为:
https://developer.android.com/reference/android/R.attr.html#persistableMode
此片段 webview 在 kotlin 中显示空白页面:
override fun setupView() {
//val mWebView: WebView? = view?.findViewById(R.id.webviewdaum) as WebView
//mWebView?.loadUrl("https://www.greenhcm.com/")
//val webSettings = mWebView?.getSettings()
//webSettings?.setJavaScriptEnabled(true)
// Force links and redirects to open in the WebView instead of in a browser
//mWebView?.setWebViewClient(WebViewClient())
//var mywebview: WebView? = null
val mywebview: WebView = view?.findViewById(R.id.webviewdaum) as WebView
mywebview!!.webViewClient = object : WebViewClient() {
override fun shouldOverrideUrlLoading(view: WebView?, url: String?): Boolean {
view?.loadUrl(url)
return true
}
}
mywebview!!.loadUrl("https://www.google.com/")
// Enable Javascript
val webSettings: WebSettings = mywebview.getSettings()
webSettings.javaScriptEnabled = true
mywebview.settings.loadWithOverviewMode = true
mywebview.settings.useWideViewPort = true
mywebview.settings.domStorageEnabled = true
// Force links and redirects to open in the WebView instead of in a browser
// Force links and redirects to open in the WebView instead of in a browser
mywebview.setWebViewClient(WebViewClient())
}
错误信息是
2020-10-27 12:33:38.773 11545-11545/com.greenhcm.android D/EgretLoader: EgretLoader(Context context) 2020-10-27 12:33:38.774 11545-11545/com.greenhcm.android D/EgretLoader: The context is not activity
我什么都试过了,还是不行。我的网络视图总是显示空白屏幕。 我的主要动机是从服务器加载pdf文件。
activity_web_view.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".activities.WebViewActivity">
<WebView
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
WebViewActivity.kt
class WebViewActivity : AppCompatActivity() {
private val url: String = "https://www.google.co.in/"
override fun onCreate(savedInstanceState: Bundle?, persistentState: PersistableBundle?) {
super.onCreate(savedInstanceState, persistentState)
setContentView(R.layout.activity_web_view)
initWebView()
setWebClient()
loadUrl(url)
}
@SuppressLint("SetJavaScriptEnabled")
private fun initWebView() {
webView.settings.javaScriptEnabled = true
webView.settings.loadWithOverviewMode = true
webView.settings.useWideViewPort = true
webView.settings.domStorageEnabled = true
webView.webViewClient = object : WebViewClient() {
override
fun onReceivedSslError(view: WebView?, handler: SslErrorHandler?, error: SslError?) {
handler?.proceed()
}
}
}
private fun setWebClient() {
webView.webChromeClient = object : WebChromeClient() {
override fun onProgressChanged(
view: WebView,
newProgress: Int
) {
super.onProgressChanged(view, newProgress)
}
}
}
private fun loadUrl(pageUrl: String) {
webView.loadUrl(pageUrl)
}
}
从 Main 调用 Activity
val intent = Intent(this, WebViewActivity::class.java)
startActivity(intent)
我不知道我做错了什么。非常感谢帮助。
提前致谢。
使用:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_web_view)
println("in webview")//--> add this to confirm this is actually called
initWebView()
setWebClient()
loadUrl(url)
}
不是你用的那个。另一个用于持久重启,在正常情况下不会被调用,您需要在清单中将 activity 标记为:
https://developer.android.com/reference/android/R.attr.html#persistableMode
此片段 webview 在 kotlin 中显示空白页面:
override fun setupView() {
//val mWebView: WebView? = view?.findViewById(R.id.webviewdaum) as WebView
//mWebView?.loadUrl("https://www.greenhcm.com/")
//val webSettings = mWebView?.getSettings()
//webSettings?.setJavaScriptEnabled(true)
// Force links and redirects to open in the WebView instead of in a browser
//mWebView?.setWebViewClient(WebViewClient())
//var mywebview: WebView? = null
val mywebview: WebView = view?.findViewById(R.id.webviewdaum) as WebView
mywebview!!.webViewClient = object : WebViewClient() {
override fun shouldOverrideUrlLoading(view: WebView?, url: String?): Boolean {
view?.loadUrl(url)
return true
}
}
mywebview!!.loadUrl("https://www.google.com/")
// Enable Javascript
val webSettings: WebSettings = mywebview.getSettings()
webSettings.javaScriptEnabled = true
mywebview.settings.loadWithOverviewMode = true
mywebview.settings.useWideViewPort = true
mywebview.settings.domStorageEnabled = true
// Force links and redirects to open in the WebView instead of in a browser
// Force links and redirects to open in the WebView instead of in a browser
mywebview.setWebViewClient(WebViewClient())
}
错误信息是
2020-10-27 12:33:38.773 11545-11545/com.greenhcm.android D/EgretLoader: EgretLoader(Context context) 2020-10-27 12:33:38.774 11545-11545/com.greenhcm.android D/EgretLoader: The context is not activity