2012-07-03 70 views
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); 



} 

**我收到错误当我运行这个program.I知道那是因为该类是abstract.But如何解决我的issue.I“无法实例类型MyWebViewClient”已经粘贴了我正在使用的两个类的代码。无法实例类型MyWebViewClient

+0

我正在做这个项目来处理页面导航,以便链接在我的webview中打开。 –

+0

我认为你没有读完整个代码。我已经用过了。 –

+0

请阅读第二堂课。 ****************************** –

回答

-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; 

    } 

} 
+0

我解决了这个问题。 –

+2

这不是一种增加声誉的方法。你所做的是,你只是首先接受我的答案,然后在接下来的几天内写下你自己的代码(使用我建议你的),一旦完成,发布你的答案,不接受我的答复并接受你自己的答案。我想这个表格应该阻止了你。 – AndoAiron

0

第一:你不能实例化一个抽象类。你只能扩展一个抽象类。

第二:创建自己的WebViewClient类(MyWebViewClient)需要什么。您可以在您的主要活动中使用webViewClient覆盖shouldOverrideUrlLoading(WebView视图,String url)方法,并在launchExternalBrowser(String url)方法中执行此方法。

我的意思是你正在触发launchOternalBrowser(String url)方法里面的意图,它是从shouldOverrideUrlLoading(WebView视图,String url)方法中调用的。那么为什么你不应该在fireOverrideUrlLoading(WebView视图,String url)方法里面引发同样的Intent方法。

+0

是的,谢谢。 –

+0

请帮助我http://stackoverflow.com/questions/27918108/progress-bar-not-working-webview-android –