2016-12-05 5 views
2

J'utilise le code ci-dessous pour revenir au Webview au premier essai. Mais pour la capacité de rendu faible, j'ai utilisé XWalkView remplacer le WebView.Comment utiliser le bouton Précédent pour revenir à XWalkView de CrossWalk ou le désactiver?

public boolean onKeyDown(int keyCode, KeyEvent event) { 
    WebView mWebView = (WebView) findViewById(R.id.webview); 
    if (event.getAction() == KeyEvent.ACTION_DOWN) { 
     switch (keyCode) { 
      case KeyEvent.KEYCODE_BACK: 

       if (mWebView.canGoBack()) { 
        mWebView.goBack(); 
       } else { 
        finish(); 
        if (MainActivity.mTencent.isSessionValid()) { 
         MainActivity.logout(); 
        } 
       } 
       return true; 
     } 

    } 
    return super.onKeyDown(keyCode, event); 
} 

Lorsque le changement de XWalkView, je ne trouve que this aller sur les retour dans le XWalkView. Mais je ne peux pas trouver un exemple à propos de l'utiliser. Lorsque je n'implémente pas le bouton retour, l'application va quitter après avoir double-cliqué sur le bouton de retour.

Ma question est: 1. Comment utiliser revenir dans le XWalkView, si un peu de code peut être plus utile. 2. Comment puis-je désactiver l'événement de clic sur le bouton de retour lorsque je n'utilise pas la fonction de retour arrière?

Merci à l'avance.

+0

[Désactiver retour bouton WebView] (https://stackoverflow.com/a/44715005/6521116) –

Répondre

4

Après des jours de creuser, je résolu ce problème: mettre cela dans le xwalkview d'activité Bien que cela fonctionne, mais revenir parfois perdu un peu d'histoire.. Donc, je veux aussi que quelqu'un donne une meilleure réponse ici.

pour GoBack:

public boolean onKeyDown(int keyCode, KeyEvent event) { 
    //WebView mWebView = (WebView) findViewById(R.id.webview); 
    XWalkView mXWalkView = (XWalkView) findViewById(R.id.xWalkView); 
    if (event.getAction() == KeyEvent.ACTION_DOWN) { 
     switch (keyCode) { 
      case KeyEvent.KEYCODE_BACK: 

       if (mXWalkView.getNavigationHistory().canGoBack()) { 
        mXWalkView.getNavigationHistory().navigate(XWalkNavigationHistory.Direction.BACKWARD, 1) ; 
       } else { 
        finish(); 
        if (MainActivity.mTencent.isSessionValid()) { 
         MainActivity.logout(); 
        } 
       } 
       return true; 
     } 

    } 
    return super.onKeyDown(keyCode, event); 
} 

pour l'événement de retour désactiver vous pouvez remplacer l'une de ces méthodes dispatchKeyEvent, onBackPressed, onKeyDown. Référez-vous au this answer pour plus.

@Override 
public boolean dispatchKeyEvent(KeyEvent event) { 
    // TODO Auto-generated method stub 
    if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) { 
     return true; 
    } 
    return super.dispatchKeyEvent(event); 
} 
2

Vous pouvez utiliser xwalkviewhistory.cangoback()

+0

Ouais, je sais, mais je ne sais pas comment l'utiliser du manuel. Voulez-vous donner plus d'informations. –

+0

et comment le désactiver? –