0
    package com.webview;

    import android.app.Activity;
    import android.content.Intent;
    import android.net.Uri;
    import android.os.Bundle;
    import android.webkit.WebView;
    import android.webkit.WebViewClient;


    public class Webview_integrationActivity extends Activity {


        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);

            WebView mywebview = (WebView) findViewById(R.id.webView1);
            mywebview.setWebViewClient(new MyWebViewClient());



        WebViewClient client = new MyWebViewClient()
        {
            @Override
            public void launchExternalBrowser(String url) {
                 Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
                 startActivity(intent);
            }

        };
    }
    }


***************************************************************************************


package com.webview;


import android.content.Intent;
import android.net.Uri;

import android.webkit.WebView;
import android.webkit.WebViewClient;

public abstract  class MyWebViewClient extends WebViewClient {

    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if (Uri.parse(url).getHost().equals("www.google.com")) {
            // This is my web site, so do not override; let my WebView load the page
            return false;
        }
        // Otherwise, the link is not for a page on my site, so launch another Activity that handles URLs
        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));

        launchExternalBrowser(url);    

        return true;

}

    public abstract void launchExternalBrowser(String url);



}

**このプログラムを実行しているときに、「タイプ MyWebViewClient をインスタンス化できません」というエラーが表示されます。そのクラスが抽象的であることはわかっていますが、問題を解決するにはどうすればよいですか。両方のクラスのコードを貼り付けました。使用しています。

4

2 に答える 2

0

最初 : 抽象クラスをインスタンス化することはできません。抽象クラスのみを拡張できます。

2番目:独自のWebViewClientクラス(MyWebViewClient)を作成する必要は何ですか。メインアクティビティで webViewClient を使用して shouldOverrideUrlLoading(WebView view, String url) メソッドをオーバーライドでき、このメソッドで launchExternalBrowser(String url) メソッドで行っているのと同じことを行います。

つまり、shouldOverrideUrlLoading(WebView view, String url) メソッドから呼び出される launchExternalBrowser(String url) メソッド内でインテントを起動しています。したがって、shouldOverrideUrlLoading(WebView view, String url) メソッド自体の中で同じインテントを起動してみませんか。

于 2012-07-03T12:06:08.200 に答える
-4
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;


public class Webview_integrationActivity extends Activity {


    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        final WebView mywebview = (WebView) findViewById(R.id.webView1);
        mywebview.setWebViewClient(new WebViewClient());

        Button button1 = (Button) findViewById(R.id.My_btn);
        button1.setOnClickListener(new OnClickListener() {

                     @Override
                     public void onClick(View v) {



                          startActivity(new Intent(
                                       "android.intent.action.VIEW",
                                        Uri.parse("https://www.google.com")));
                           // TODO Auto-generated method stub
                          }

              });

    }
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            if (Uri.parse(url).getHost().equals("www.google.com")) {
                // This is my web site, so do not override; let my WebView load the page
                return false;
            }
            // Otherwise, the link is not for a page on my site, so launch another Activity that handles URLs
            Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));

            startActivity(intent);

            return true;

    }

}
于 2012-07-04T10:44:19.610 に答える