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

前端 未结 13 2228
余生分开走
余生分开走 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:34

    This is how I did in my app. I consume back press event till web view can go back. Once web view cant go back I show hint to user that if he keep on pressing back then app will exit.

    It will give user a chance to stay in your app when webview cant go back. I felt it more user friendly:

              //time passed between two back presses.
              private val TIME_INTERVAL = 200 
               // variable to keep track of last back press
              private var mBackPressed: Long = 0
    
    
            webView!!.requestFocus()
            webView.setOnKeyListener(View.OnKeyListener { v, keyCode, event ->
                if (keyCode == KeyEvent.KEYCODE_BACK
                        && event.action == MotionEvent.ACTION_UP
                      ) {
                    if(webView.canGoBack()) {
                        //go back in previous page
                        webView.goBack()
                        return@OnKeyListener true
                    }
                    else
                    {
                        if (mBackPressed + TIME_INTERVAL > System.currentTimeMillis())
                        {   // dont consume back press and pass to super
                            return@OnKeyListener false
                        }
                        else {
                            // show hint for double back press
                            Toast.makeText(context, " Double Tap back button to exit the demo", Toast.LENGTH_SHORT).show();
                            mBackPressed = System.currentTimeMillis();
                            return@OnKeyListener true
                        }
                    }
                }
                return@OnKeyListener false
    
            })
    

提交回复
热议问题