2016-12-05 71 views
2

我使用下面的代碼在第一次嘗試中返回到webview。但對於低渲染能力,我用XWalkView替換了WebView。如何使用返回按鈕返回XWalkView的CrossWalk,或禁用它?

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); 
} 

當改變XWalkView,我只能找到this有關回去在XWalkView。但我找不到要使用它的例子。 當我沒有實現後退按鈕envent時,應用程序將在我雙擊後退按鈕後退出。

我的問題是: 1.如何使用XWalkView,如果有些代碼可能更有幫助。 2.如何禁用後退按鈕單擊事件,當我不使用回退功能時。

預先感謝您。

+0

[禁用早在網頁視圖按鈕(https://stackoverflow.com/a/44715005/6521116) –

回答

4

挖後的日子裏,我解決了這個:把這個在活動xwalkview雖然這工作,但回去有時會丟失一些歷史。所以我也希望有人在這裏給出更好的答案。

爲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); 
} 

爲禁用回到事件中,你可以重寫這兩種方法dispatchKeyEventonBackPressedonKeyDown的。有關更多信息,請參閱this answer

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

您可以使用xwalkviewhistory.cangoback()

+0

是啊,我知道這一點,但我不知道如何從手動使用它。你會提供更多信息。 –

+0

以及如何禁用它? –