Java 在额外的WebView类中而不是在内部类中启动intent?

Java 在额外的WebView类中而不是在内部类中启动intent?,java,android,android-intent,android-webview,Java,Android,Android Intent,Android Webview,我想让我的主要活动保持小而清晰。因此,我为WebView创建了一个独立的类,而不是一个内部类,如下所示: protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mWebView = (WebView) findViewById(R.id.activity_main_web

我想让我的主要活动保持小而清晰。因此,我为WebView创建了一个独立的类,而不是一个内部类,如下所示:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mWebView = (WebView) findViewById(R.id.activity_main_webview);
    WebSettings webSettings = mWebView.getSettings();
    webSettings.setJavaScriptEnabled(true);
    mWebView.addJavascriptInterface(new JavaScriptInterface(this), "Android");
    mWebView.setWebViewClient(new CustomWebViewClient()); 
但是现在我想用
openInAppBrowser
方法在
CustomWebViewClient
中启动一个新的活动:

public class CustomWebViewClient extends WebViewClient {

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if(Uri.parse(url).getHost().endsWith(PROJECT_REMOTE)) {
            return false;
        } else {
            openInAppBrowser(this, url);
        }
        return true;
    }
    private void openInAppBrowser(Activity activity, String url) {
        Intent intent = new Intent(activity, InAppBrowser.class);
        intent.putExtra("url", url);
        activity.startActivity(intent);
    }
既然
this
MainActivity.this
在此不起作用,我如何引用MainActivity使此方法起作用?或者MainActivity中的内部类是更好的还是唯一的选择

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mWebView = (WebView) findViewById(R.id.activity_main_webview);
    WebSettings webSettings = mWebView.getSettings();
    webSettings.setJavaScriptEnabled(true);
    mWebView.addJavascriptInterface(new JavaScriptInterface(this), "Android");
    mWebView.setWebViewClient(new CustomWebViewClient(this)); 



public class CustomWebViewClient extends WebViewClient {

Activity activity;

public CustomWebViewClient (Activity activity) {
    this.activity= activity;

}

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if(Uri.parse(url).getHost().endsWith(PROJECT_REMOTE)) {
            return false;
        } else {
            openInAppBrowser(url);
        }
        return true;
    }
    private void openInAppBrowser(String url) {
        Intent intent = new Intent(activity, InAppBrowser.class);
        intent.putExtra("url", url);
        activity.startActivity(intent);
    }

按要求。我不确定这是否有效,这就是为什么我没有首先给出答案。

webview是否在主活动类中?是的,我创建了一个新的CustomWebViewClient实例(我发布的第一个代码)在MainActivity.Then
MainActivity.this
不起作用?与
MainActivity.this
一起使用。它表示MainActivity不是一个封闭类。这里传递
openInAppBrowser(MainActivity.this,url)