Android 网络视图返回
WebView可以返回、前进并在虚拟设备上重新加载。当我在真正的设备上前后测试它时,它不工作。至于重新加载,它工作得很好。我知道有人问过同样的问题,但我没有找到我的例子的答案Android 网络视图返回,android,webview,kotlin,Android,Webview,Kotlin,WebView可以返回、前进并在虚拟设备上重新加载。当我在真正的设备上前后测试它时,它不工作。至于重新加载,它工作得很好。我知道有人问过同样的问题,但我没有找到我的例子的答案 class Site : android.support.v4.app.Fragment(), OnBackPressedListener { var changeU: String = "https://www.google.ru/search?client=opera&q=google&sou
class Site : android.support.v4.app.Fragment(), OnBackPressedListener {
var changeU: String = "https://www.google.ru/search?client=opera&q=google&sourceid=opera&ie=UTF-8&oe=UTF-8"
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.site, container, false)
}
override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
webView.saveState(outState)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
setHasOptionsMenu(true)
webView.settings.javaScriptEnabled = true
webView.settings.cacheMode = WebSettings.LOAD_CACHE_ELSE_NETWORK
if (savedInstanceState == null) {
webView.loadUrl(changeU)
}
webView.settings.setSupportZoom(true)
webView.settings.builtInZoomControls = true
webView.settings.displayZoomControls = false
webView.webViewClient = MyWebViewClient()
super.onViewCreated(view, savedInstanceState)
}
private inner class MyWebViewClient : WebViewClient() {
override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean {
view.loadUrl(url)
return true
}
}
override fun onCreateOptionsMenu(menu: Menu?, inflater: MenuInflater?) {
inflater!!.inflate(R.menu.site_menu, menu)
super.onCreateOptionsMenu(menu, inflater)
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
when (item.itemId) {
R.id.backT -> {
if (webView.canGoBack()) {
webView.goBack()
} else {
}
return true
}
R.id.reloadT -> {
webView.reload()
return true
}
R.id.forwardT -> {
if (webView.canGoForward()) {
webView.goForward()
}
return true
}
else -> return super.onOptionsItemSelected(item)
}
}
override fun onBackPressed() {
if (webView.canGoBack()) {
webView.goBack()
} else {
}
}
}
我想这是一个很简单的错误,但我无法解决。Android WebView新选项卡操作URL可以通过扩展WebChromeClient来处理。 请看活动课
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.webkit.*
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
private val changeU: String = "https://www.google.ru/search?client=opera&q=google&sourceid=opera&ie=UTF-8&oe=UTF-8"
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
webView.settings.javaScriptEnabled = true
webView.settings.cacheMode = WebSettings.LOAD_CACHE_ELSE_NETWORK
webView.settings.setSupportZoom(true)
webView.settings.builtInZoomControls = true
webView.settings.displayZoomControls = false
// add multi window support
webView.settings.javaScriptCanOpenWindowsAutomatically = true
webView.webViewClient = MyWebViewClient()
webView.webChromeClient = MyWebChromeClient()
if (savedInstanceState == null) {
webView.loadUrl(changeU)
}
}
private inner class MyWebChromeClient : WebChromeClient() {
// handle new tab action urls if required
override fun onShowCustomView(view: View?, callback: CustomViewCallback?) {
super.onShowCustomView(view, callback)
}
}
private inner class MyWebViewClient : WebViewClient() {
override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean {
view.loadUrl(url)
return true
}
override fun shouldOverrideUrlLoading(view: WebView?, request: WebResourceRequest?): Boolean {
return super.shouldOverrideUrlLoading(view, request)
}
}
override fun onBackPressed() {
if (webView.canGoBack()) {
webView.goBack()
} else {
}
}
}
您好,此url(“)正在新选项卡中打开结果url,这就是为什么您的Web视图没有任何goBackOk历史记录的原因。非常感谢。如果是这种情况,我该怎么办?您好,请稍候,发布解决方案谢谢,但对我没有帮助(