2017-08-01 5 views
0

Je veux revenir en fonction de la presse WebView pour aller à la page précédente dans WebView (dans le fragment) ...Comment gérer WebView retour presse fragment

Here is the fragment code

J'ai essayé d'ajouter suivante code qui ne fonctionne pas:

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 

    if (keyCode == KeyEvent.KEYCODE_BACK){ 
     if(Wv.canGoBack()){ 
      Wv.goBack(); 
      return true; 
     } 
    } 
    return super.onKeyDown(keyCode, event); 
} 

Comment résoudre ce problème? Obtenez l'instance de votre Fragment dans votre activité et substituez la méthode onBackPressed à

+0

vous pouvez utiliser ma solution: https://stackoverflow.com/a/45430033/3999826 –

Répondre

0

@Override 
public void onBackPressed(){ 
    if(fragment.webView.canGoBack){ 
     fragment.webView.goBack(); 
    } else{ 
     super.onBackPressed(); 
    } 
} 
+0

monsieur ce qui est fragment –

+0

instance de votre 'Fragment'. –

+0

montrant toujours l'erreur –

1

Ce travail pour moi

public class MyWebView extends Fragment { 
    private WebView mWebView; 
    private View rootView; 
    private Handler handler = new Handler(){ 
     @Override 
     public void handleMessage(Message message) { 
      switch (message.what) { 
       case 1:{ 
        webViewGoBack(); 
       }break; 
      } 
     } 
    }; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

     rootView = inflater.inflate(R.layout.testwebview, null); 
     mWebView = (WebView)rootView.findViewById(R.id.webview); 


     mWebView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); 
     mWebView.getSettings().setBuiltInZoomControls(false); 
     mWebView.loadUrl("myurl..."); 
     mWebView.setOnKeyListener(new View.OnKeyListener(){ 

      public boolean onKey(View v, int keyCode, KeyEvent event) { 
       if (keyCode == KeyEvent.KEYCODE_BACK 
         && event.getAction() == MotionEvent.ACTION_UP 
         && mWebView.canGoBack()) { 
        handler.sendEmptyMessage(1); 
        return true; 
       } 

       return false; 
      } 

     }); 
      return rootView; 
    } 

    private void webViewGoBack(){ 
     mWebView.goBack(); 
    } 
}