Android WebView goBackMethod使我脱离web视图片段

Android WebView goBackMethod使我脱离web视图片段,android,webview,Android,Webview,我在片段中使用webview。我想在片段上实现onBackPress,以便应用程序从一个链接返回到上一个链接。这是我下面的代码 @Override public void onBackPressed() { // super.onBackPressed(); if(webView!=null && webView.canGoBack()) { webView.goBack(); } else { super.onBa

我在片段中使用webview。我想在片段上实现onBackPress,以便应用程序从一个链接返回到上一个链接。这是我下面的代码

 @Override
public void onBackPressed() {
 //   super.onBackPressed();
    if(webView!=null && webView.canGoBack()) {
        webView.goBack();
    }
    else {
        super.onBackPressed();
    }
}
我已经通过基本片段在片段中实现了这一点

webView.goBack()

但它并没有回到上一页,而是把我带出了片段。
为什么会这样呢?

只需将下面的代码放在back按钮实现中

    switch (view.getId()){
            case R.id.imag_back:
                if (webview.canGoBack()) {
                    webview.goBack();
                } else {
                    finish();
                }
}
希望这能解决你的问题


另外,请检查您的父活动,以了解onbackpressed()方法

使用ChildFragmentManager并将您的webView URL放入其中

在你的活动中

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        getSupportFragmentManager().beginTransaction().add(R.id.content, WebFragment.newInstance(), "WEB_FRAGMENT_TAG")
                .addToBackStack(null)
                .commit();
    }

    @Override
    public void onBackPressed() {
        WebFragment fragment = (WebFragment) getSupportFragmentManager().findFragmentByTag("WEB_FRAGMENT_TAG");
        int stackEntryCount = fragment.getChildFragmentManager().getBackStackEntryCount();
        if (stackEntryCount > 0) {
            fragment.getChildFragmentManager().popBackStack();
            fragment.popUrlBack();
        } else {
            super.onBackPressed();
        }
    }
}
在你的片段中

@Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);

        webView.setWebViewClient(new WebViewClient() {
            @Override
            public void onPageFinished(WebView view, String url) {
                super.onPageFinished(view, url);
                getChildFragmentManager().beginTransaction().addToBackStack(url).commit();
            }
        });
    }

    public void popUrlBack() {
        webView.goBack();
    }

它正在执行代码webView.goBack(),然后它将退出。您还必须在主活动中检查onback实现