2016-12-05 11 views
2

다음 코드를 사용하여 처음에는 webview로 돌아갑니다. 그러나 렌더링 성능이 낮 으면 WebView를 XWalkView로 대체했습니다.뒤로 버튼을 사용하여 CrossWalk의 XWalkView로 돌아가거나 사용 중지하는 방법은 무엇입니까?

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에서 이동 찾을 수 있습니다. 그러나 나는 그것을 사용하려고하는 모범을 발견 할 수 없다. 뒤로 버튼을 구현하지 않으면 뒤로 버튼을 두 번 클릭하면 앱이 종료됩니다.

내 질문 : 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); 
} 

비활성화 다시 이벤트에 대한 이러한 방법 dispatchKeyEvent, onBackPressed, onKeyDown 중 하나를 대체 할 수 있습니다. 자세한 내용은 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

및 사용 중지 방법 –