简体   繁体   English

如何处理Webview后按片段

[英]How to handle webview back press in fragment

I want to back press feature in web-view for go to previous page in web-view (in fragment)... 我想在Web视图中向后按功能以转到Web视图中的上一页(片段)...

Here is the fragment code 这是片段代码

I tried adding following code which is not working: 我尝试添加以下无效的代码:

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

How do I solve this? 我该如何解决?

This Work for me 这对我有用

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

Get the instance of your Fragment in you activity, and override the onBackPressed method. 在您的活动中获取Fragment的实例,并覆盖onBackPressed方法。

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM