关于 android:为什么我的 webView 不显示任何内容并自动将我重定向到内置浏览器?
Why my webView doesn't show anything and automatically redirect me to in-built browser?
我想在对话框中显示我的网页内容。它可以是普通的
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <WebView |
然后首先创建
class ShowJob : DialogFragment(), View.OnClickListener {
var listPosition: Int? = 0 var offset: Int? = 0 lateinit var link: String val TAG = ShowJob::class.java.simpleName!!
override fun onCreate(savedInstanceState: Bundle?) {
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { val webView = view.findViewById<WebView>(R.id.webView)
webView.loadUrl(link) return view private inner class HelloWebViewClient : WebViewClient() { } override fun onClick(p0: View?) { |
它不显示任何内容并将我重定向到 Chrome 等内置浏览器。然后我读到有时更改根布局类型的类型会有所帮助,并将我的
的父片段中显示了
val webDialog = Dialog(context)
webDialog.setContentView(R.layout.show_job_scr) webDialog.setCancelable(true) val webView = webDialog.findViewById<WebView>(R.id.webView) webDialog.show() |
它还将我重定向到内置浏览器。我的问题在哪里,我该如何解决?我看到了这个例子,这里开发人员设法在对话框中显示内容。我看到了很多示例,并且到处有人设法在对话框中显示 Web 内容,但我在重定向方面遇到了一些问题。
相关讨论
- 你能在 shouldOverideUrlLoading 视图中添加这一行吗?.loadUrl(request?.url.toString())
- @AnasMehar,我必须在哪里添加这一行?我发布了我的解决方案,如果需要,您也可以查看它:)
- WebViewClient 回调方法 shouldOverrideUrlLoading 必须 args 第一个视图:WebView,第二个是请求:WebResourceRequest?所以你可以在回调方法中添加这条线 view?.loadUrl(request?.url.toString()) override fun shouldOverrideUrlLoading(view: WebView?, request: WebResourceRequest?): Boolean
- 因为您实现了它以将所有内容重定向到默认浏览器。您的代码正是这样做的 - 重定向到默认浏览器。
- 但现在我设法在我的 dialogFragment 中显示 webView,也许问题出在内部类上?
// this is the reason webView.webViewClient = HelloWebViewClient()
private inner class HelloWebViewClient : WebViewClient() { } |
相关讨论
- 所以我必须删除这个类,我会在 dialogFragment 中显示我的 webView?
我已经通过在这个问题上发布的解决方案解决了我的问题:
webView.webViewClient = object : WebViewClient() {
override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean { view.loadUrl(url) return false } } |
我删除了内部类并在
中添加了这些行