Android 为什么我的网络视图没有';不显示任何内容并自动将我重定向到内置浏览器?
我想在对话框中显示我的web内容。它可以是普通的Android 为什么我的网络视图没有';不显示任何内容并自动将我重定向到内置浏览器?,android,webview,dialog,Android,Webview,Dialog,我想在对话框中显示我的web内容。它可以是普通的Dialog()或DialogFragment。我已经创建了布局: <?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="ma
Dialog()
或DialogFragment
。我已经创建了布局:
<?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
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</RelativeLayout>
它不显示任何内容,并将我重定向到内置浏览器,如Chrome。然后我读到,有时更改根布局类型会有所帮助,并将我的RelativeLayout
更改为FrameLayout
——这没有帮助。然后我想问题可能和所有的布局有关,并用一些文本放置了textView
,它显示在我的片段中。第二个变体-我从父片段中显示了Dialog()
,我试图从父片段中显示DialogFragment
:
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?) {
super.onCreate(savedInstanceState)
val bundle = arguments
offset = bundle!!.getInt("jobOffset")
link = bundle.getString("link")
listPosition = bundle.getInt("listPosition", 0)
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val view = inflater.inflate(R.layout.show_job_scr,container,false)
val webView = view.findViewById<WebView>(R.id.webView)
webView.loadUrl(link)
webView.webViewClient = HelloWebViewClient()
WebView.setWebContentsDebuggingEnabled(false)
return view
}
private inner class HelloWebViewClient : WebViewClient() {
override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean {
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url))
startActivity(intent)
return true
}
}
override fun onClick(p0: View?) {
}
}
val webDialog = Dialog(context)
webDialog.setContentView(R.layout.show_job_scr)
webDialog.setCancelable(true)
val webView = webDialog.findViewById<WebView>(R.id.webView)
!webView.isScrollbarFadingEnabled
!webView.isHorizontalScrollBarEnabled
webView.settings.javaScriptEnabled
webView.clearCache(true)
webView.loadUrl(url)
webDialog.show()
val webDialog=Dialog(上下文)
webDialog.setContentView(R.layout.show\u job\u scr)
webDialog.setCancelable(真)
val webView=webDialog.findviewbyd(R.id.webView)
!webView.isScrollbarFadingEnabled
!webView.isHorizontalScrollBarEnabled
webView.settings.javaScriptEnabled
webView.clearCache(true)
webView.loadUrl(url)
webDialog.show()
它还将我重定向到内置浏览器。我的问题在哪里?如何解决?我看到了这个示例,这里开发人员设法在对话框中显示内容。我看到了很多例子,到处都有人试图在对话框中显示web内容,但我在重定向方面遇到了一些问题。我已经用一个解决方案解决了我的问题,该解决方案发布在问题:
// this is the reason webView.webViewClient = HelloWebViewClient()
private inner class HelloWebViewClient : WebViewClient() {
override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean
{
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url))
startActivity(intent)
return true
}
}
webView.webViewClient = object : WebViewClient() {
override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean {
view.loadUrl(url)
return false
}
}
我删除了内部类并在
onCreateView
中添加了这些行,因此我必须删除这个类,并在dialogFragment中显示我的webView?你能在shouldOverideUrlLoading视图?.loadUrl(request?.url.toString())@AnasMehar中添加这一行吗?我发布了我的解决方案,如果需要,您也可以检查它:)WebViewClient回调方法应该重写Alloading必须参数第一个视图:WebView,第二个是请求:WebResourceRequest?因此,您可以在回调方法override fun shouldOverrideUrlLoading(视图:WebView?,请求:WebResourceRequest?):Boolean中添加此行视图?.loadUrl(请求?.url.toString()),因为您实现它是为了将所有内容重定向到默认浏览器。您的代码正是这样做的-重定向到默认浏览器。但是现在我设法在dialogFragment中显示webView,可能是内部类的问题?