How to add “Go Back” function in WebView inside Fragment?

前端 未结 13 2157
余生分开走
余生分开走 2020-11-27 05:21

UPDATE: Solved! Problem was related to my Viewpager not WebView.

I\'m trying to add a \"Go Back\" function to my WebView which is insid

13条回答
  •  渐次进展
    2020-11-27 05:40

    There is a simple way with BackPressedDispatcher

    Fragment:

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        val callback = object : OnBackPressedCallback(true) {
            override fun handleOnBackPressed() {
                if(webView.canGoBack()){
                   webView.goBack()
                } else {
                    isEnabled = false
                    requireActivity().onBackPressed()
                }
            }
        }
        requireActivity().onBackPressedDispatcher.addCallback(this,callback)
    }
    

    Activity :

    override fun onBackPressed() {
        val fragment = supportFragmentManager.findFragmentByTag("WebViewFragment")
        if (WebViewFragment::class.java.isInstance(fragment)) {
            if (onBackPressedDispatcher.hasEnabledCallbacks()) {
                onBackPressedDispatcher.onBackPressed()
                return
            }
            super.onBackPressed()
        }
    }
    

    Maybe these codes can be improved, but it works very well for me. For more information visit here.

提交回复
热议问题