按“返回按钮”返回webview

时间:2016-04-20 19:48:30

标签: android webview

如何在网页浏览中返回一页?例如:我在我的应用程序中处于活动状态并在webview中浏览页面,但是一旦我按下后退按钮它将退出应用程序或只是返回活动而不是页面..

我完成了我的研究并且重写onBackPressed函数不起作用。

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

整个片段代码:

 public class FragmentTwo extends Fragment {


    public FragmentTwo() {
        // Required empty public constructor
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);


    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment2, container, false);

    }

    @Override
    public void onViewCreated(View view, Bundle savedInstanceState){

        WebView webView = (WebView) getActivity().findViewById(R.id.webView);

        WebSettings webSettings = webView.getSettings();
        webView.setScrollbarFadingEnabled(false);
        webSettings.setJavaScriptEnabled(true);
        webView.setWebViewClient(new WebViewClient());
        webView.loadUrl("http://myapp.com");

    }


}

有关如何实现它的任何建议吗?

2 个答案:

答案 0 :(得分:0)

onBackPressed()是Activity的方法,而不是Fragment的方法,因此永远不会调用此代码。如果你想在背面做一些事情,你的父活动必须让你的片段知道它 - 你必须在父活动中实现onBackPressed(),在那个方法中你应该调用片段的方法(或事件总线上的fire事件,或者使用听众,回调等等。

同样正确的方法名称是onCreateView(),而不是onViewCreated() - 也不会调用此方法。

答案 1 :(得分:0)

您的OnCreateView内部:

 @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        view = inflater.inflate(R.layout.your_layout, container, false);

      webView = (WebView) view.findViewById(R.id.webView);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.setWebViewClient(new MyWebViewClient());
        webView.loadUrl(expertsUrl);

        return view;
    }


private class MyWebViewClient extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }
    }

确定!在您的MainActivity中,您将编写它:

     @Override
        public void onBackPressed() {
if(yourname_Fragment.webView!=null){
            if (yourname_Fragment.webView.canGoBack()) {
                yourname_Fragment.webView.goBack();
            }
}
        }

yourname_Fragmen.java =这是您对Webview内容的nameFragment

webView =您的WebView(id)的名称

现在。在Fragment中你必须声明静态全局变量

public static Webview webView;

注意:如果您有多个片段,则必须检查此实例是否与NULL不同;

就是这样!祝你好运!