Android 如何解决WebViewClient破坏应用程序的问题?

Android 如何解决WebViewClient破坏应用程序的问题?,android,webview,webviewclient,Android,Webview,Webviewclient,我正在尝试将WebViewClient添加到我的WebView应用程序中。但每次我尝试用WebViewClient启动它时,它都会停止工作 MainActivity.java public class MainActivity extends AppCompatActivity { private WebView myWebView; @Override protected void onCreate(Bundle savedInstanceState) {

我正在尝试将WebViewClient添加到我的WebView应用程序中。但每次我尝试用WebViewClient启动它时,它都会停止工作

MainActivity.java

public class MainActivity extends AppCompatActivity {

    private WebView myWebView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        MyWebViewClient webViewClient = new MyWebViewClient(this);
        myWebView.setWebViewClient(webViewClient);

        myWebView = findViewById(R.id.webview);
        myWebView.loadUrl("https://www.google.com.br/");

        WebSettings webSettings = myWebView.getSettings();
        webSettings.setJavaScriptEnabled(true);

    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if ((keyCode == KeyEvent.KEYCODE_BACK) && myWebView.canGoBack()) {
            myWebView.goBack();
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }
}
public class MyWebViewClient extends WebViewClient {

    private Activity activity = null;
    public MyWebViewClient(Activity activity) {
        this.activity = activity;
    }
    @Override
    public boolean shouldOverrideUrlLoading(WebView webView, String url) {
        if(url.contains("https://google.com/")) return false;
        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
        activity.startActivity(intent);
        return true;
    }

}
MyWebViewClient.java

public class MainActivity extends AppCompatActivity {

    private WebView myWebView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        MyWebViewClient webViewClient = new MyWebViewClient(this);
        myWebView.setWebViewClient(webViewClient);

        myWebView = findViewById(R.id.webview);
        myWebView.loadUrl("https://www.google.com.br/");

        WebSettings webSettings = myWebView.getSettings();
        webSettings.setJavaScriptEnabled(true);

    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if ((keyCode == KeyEvent.KEYCODE_BACK) && myWebView.canGoBack()) {
            myWebView.goBack();
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }
}
public class MyWebViewClient extends WebViewClient {

    private Activity activity = null;
    public MyWebViewClient(Activity activity) {
        this.activity = activity;
    }
    @Override
    public boolean shouldOverrideUrlLoading(WebView webView, String url) {
        if(url.contains("https://google.com/")) return false;
        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
        activity.startActivity(intent);
        return true;
    }

}

当我注释行
myWebView.setWebViewClient(webViewClient)时MainActivity.java中,应用程序再次工作。关于如何解决此WebVIewClient问题,您有什么想法吗?

现在,您正在将客户端设置为
myWebView
上,然后再运行它 初始化

    public class MainActivity extends AppCompatActivity {

    private WebView myWebView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //should be initialized first
        myWebView = findViewById(R.id.webview);

        MyWebViewClient webViewClient = new MyWebViewClient(this);
        myWebView.setWebViewClient(webViewClient);


        myWebView.loadUrl("https://www.google.com.br/");

        WebSettings webSettings = myWebView.getSettings();
        webSettings.setJavaScriptEnabled(true);

    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if ((keyCode == KeyEvent.KEYCODE_BACK) && myWebView.canGoBack()) {
            myWebView.goBack();
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }
}

请同时添加崩溃日志