Android 网络视图返回

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

WebView可以返回、前进并在虚拟设备上重新加载。当我在真正的设备上前后测试它时,它不工作。至于重新加载,它工作得很好。我知道有人问过同样的问题,但我没有找到我的例子的答案

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历史记录的原因。非常感谢。如果是这种情况,我该怎么办?您好,请稍候,发布解决方案谢谢,但对我没有帮助(