2017-08-01 51 views
0

我想返回按功能在web視圖爲返回上一頁的網頁流量(在片段)...如何處理的WebView回來按在片段

Here is the fragment code

我嘗試添加以下代碼不工作:

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

我該如何解決這個問題?

+0

你可以用我的解決方案:https://stackoverflow.com/a/45430033/3999826 –

回答

0

在您的活動中獲取Fragment的實例,並覆蓋onBackPressed方法。

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

先生你有什麼'Fragment'的片段 –

+0

實例。 –

+0

仍然顯示錯誤 –

1

這項工作對我來說

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