javascript - webview .canGoBack 显示为错误(红色)

标签 javascript java android android-studio webview

我希望 webview 在按下后退按钮时显示上一页我正在使用 .canGoBack 来完成此操作,但“.canGoBack”和“.GoBack”带有红线下划线,声明 ====

“无法从静态上下文引用非静态方法‘canGoBack()’”

任何帮助都会很好

这是我的主要 Activity java

import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;

import static in.notherstore.notherstore.R.id.webView;
import static in.notherstore.notherstore.R.id.webview;

public class MainActivity extends Activity {

    private ProgressDialog pd;

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

        getWindow().getDecorView().setSystemUiVisibility(
                View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                        | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                        | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                        | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                        | View.SYSTEM_UI_FLAG_FULLSCREEN
                        | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
        WebView webView = new WebView(this);
        webView.setClickable(true);
        webView.setFocusableInTouchMode(true);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.loadUrl("http://www.notherstore.in");
        WebClientClass webViewClient = new WebClientClass();
        webView.setWebViewClient(webViewClient);

        setContentView(webView);
        pd = new ProgressDialog(MainActivity.this);
        pd.setTitle("Loading Store");
        pd.setMessage("This may take several Minutes...");
        pd.show();
    }

    public class WebClientClass extends WebViewClient {

        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            super.onPageStarted(view, url, favicon);


        }

        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
            pd.dismiss();
        }



    }
    @Override
    public void onBackPressed() {
        if (WebView.canGoBack()) {
            WebView.goBack();
            return;
        }

        // Otherwise defer to system default behavior.
        super.onBackPressed();
    }
}

最佳答案

您需要通过类 WebView 调用引用 (webView) 上的方法 应该是这样的

@Override
public void onBackPressed() {
    if (webView.canGoBack()) {
        webView.goBack();
        return;
    }
    // Otherwise defer to system default behavior.
    super.onBackPressed();
}

并将 webView 声明移至 oncreate

之外
WebView webView;

OnCreate(..){
    //..code
    webView = new WebView(this);
    //.. more code
}

关于javascript - webview .canGoBack 显示为错误(红色),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46589304/

相关文章:

javascript - 多个列表项的同级项

javascript - 手动复制/粘贴隐藏数据

javascript - Angularjs:回调父 Controller

java - 在java中写入python套接字服务器

android - 在启动时将应用程序锁定到当前屏幕方向

javascript - Uncaught SyntaxError : Missing ) after argument list, but no extra }'s? [closed]

java - 想要在android中的两个framelayout之间使用setvisible方法

java - 如何更改 Java 小程序的背景颜色?

android - SMS检索器API:SMSBroadcastReceiver未检测到接收到的otp

android - ViewPager 内的 TabLayout 禁止滑动