首页 > 解决方案 > 方法不会使用 onBackPressed() 覆盖其超类 Android Fragment 中的方法

问题描述

所以我有一个非常简单的 webview 应用程序,我正在尝试实现一个 onBackPressed() 以便当他们单击后退按钮时,用户返回到上一页。

我在网上看了,它说我必须添加这个:

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

这是我试图添加 onBackPressed() 的活动:

public class ForumActivity extends Fragment {
    private WebView webView;


    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.activity_forum, container, false);
        final WebView webView = (WebView) view.findViewById(R.id.forum_view);
        webView.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(final WebView view, final String url) {
                return false;
            }

        });

        // mWebView settings...
        WebSettings settings = webView.getSettings();
        settings.setJavaScriptEnabled(true);
        settings.setAppCacheEnabled(true);
        settings.setLoadWithOverviewMode(true);
        settings.setUseWideViewPort(true);
        settings.setSupportZoom(true);
        settings.setBuiltInZoomControls(true);
        settings.setDisplayZoomControls(false);
        settings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
        settings.setCacheMode(WebSettings.LOAD_NO_CACHE);
        settings.setDomStorageEnabled(true);
        webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
        webView.setScrollbarFadingEnabled(true);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            webView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
        } else {
            webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
        }
        // Load URL
        webView.loadUrl("link");

        return view;


    }

当我最初尝试添加它时,会发生这种情况。它显示的错误是“方法不会覆盖其超类中的方法”。

我应该怎么办?

标签: javaandroid

解决方案


这是我试图添加 onBackPressed() 的活动:

您正在链接片段的代码。不是活动。有很大的不同。
片段没有回调来拦截后按。
活动做。
您已将该类命名为“ForumActivity”,但它实际上是一个片段。

因此,您必须在 Activity 中覆盖该方法,然后将其与您的 Fragment 链接起来。


推荐阅读