0

我想将此代码添加到我的 java 文件中:

webView.setWebViewClient(new WebViewClient(){
   public boolean shouldOverrideUrlLoading(WebView view, String url) {
       if (url != null && url.startsWith("http://")) {
           view.getContext().startActivity(
               new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
           return true;
       } else {
           return false;
       }
   }
}

但我不知道在哪里。这是我的java文件:package sheddle.donald.duck.app;导入android.app.Activity;导入android.os.Bundle;导入android.view.Window;导入 android.webkit.WebChromeClient;导入 android.webkit.WebView;导入 android.webkit.WebViewClient;公共类 WebPageLoader 扩展 Activity { WebView webview;

final Activity activity = this;

@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
this.getWindow().requestFeature(Window.FEATURE_PROGRESS);
setContentView(R.layout.main);
webview = (WebView) findViewById(R.id.webview);
webview.getSettings().setJavaScriptEnabled(true);
webview.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
webview.getSettings().setSupportMultipleWindows(true);
webview.getSettings().setPluginsEnabled(true);

webview.setWebChromeClient(new WebChromeClient() {
    public void onProgressChanged(WebView view, int progress)
    {
        activity.setTitle("Loading...");
        activity.setProgress(progress * 100);

        if(progress == 100)
            activity.setTitle(R.string.app_name);
    }
 });

 webview.setWebViewClient(new WebViewClient() {


    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url)
    {
        view.loadUrl(url);
        return true;

    }
   });



 webview.loadUrl("http://www.sherdle.com/apphosting/dd");
 }

 @Override
 public void onBackPressed (){
    if(webview.canGoBack()) webview.goBack();
    else super.onBackPressed();
 }
 }

我是 android 新手,我所做的一切都需要很多帮助。谢谢你的帮助。

我现在已经有了这个:package sheddle.donald.duck.app; 导入android.app.Activity;导入android.os.Bundle;导入android.view.Window;导入 android.webkit.WebChromeClient;导入 android.webkit.WebView;导入 android.webkit.WebViewClient;公共类 WebPageLoader 扩展 Activity { WebView webview;

final Activity activity = this;

@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
this.getWindow().requestFeature(Window.FEATURE_PROGRESS);
setContentView(R.layout.main);
webview = (WebView) findViewById(R.id.webview);
webview.getSettings().setJavaScriptEnabled(true);
webview.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
webview.getSettings().setSupportMultipleWindows(true);
webview.getSettings().setPluginsEnabled(true);

 webview.setWebChromeClient(new WebChromeClient() {
    public void onProgressChanged(WebView view, int progress)
    {
        activity.setTitle("Loading...");
        activity.setProgress(progress * 100);

        if(progress == 100)
            activity.setTitle(R.string.app_name);
    }
 });



 webview.setWebViewClient(new WebViewClient() {


    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url)
    {
        view.loadUrl(url);
        return true;

    }
 });

 webview.setWebChromeClient(new WebChromeClient(){
   public boolean shouldOverrideUrlLoading(WebView view, String url) {
       if (url != null && url.startsWith("http://")) {
           view.getContext().startActivity(
               new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
           return true;
       } else {
           return false;
       }
   }

  webview.loadUrl("http://www.sherdle.com/apphosting/dd");
  }



 @Override
 public void onBackPressed (){
    if(webview.canGoBack()) webview.goBack();
    else super.onBackPressed();
 }
 }

但我在我的 LoadUrl 行上收到此错误:此行有多个标记 - 语法错误,插入“AssignmentOperator 表达式”以完成表达式 - 语法错误,插入“;” 完成 FieldDeclaration - 语法错误,插入“)” 完成 MethodInvocation - 语法错误,插入“}” 完成 ClassBody - 语法错误,插入“;” 完成语句 - 标记上的语法错误,错误的构造

4

3 回答 3

1

以这种方式使用

    @Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
this.getWindow().requestFeature(Window.FEATURE_PROGRESS);
setContentView(R.layout.main);
webview = (WebView) findViewById(R.id.webview);
webview.getSettings().setJavaScriptEnabled(true);
webview.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
webview.getSettings().setSupportMultipleWindows(true);
webview.getSettings().setPluginsEnabled(true);

 webview.setWebChromeClient(new WebChromeClient() {
    public void onProgressChanged(WebView view, int progress)
    {
        activity.setTitle("Loading...");
        activity.setProgress(progress * 100);

        if(progress == 100)
            activity.setTitle(R.string.app_name);
    }
 });



 webview.setWebViewClient(new WebViewClient() {


    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url)
    {
        view.loadUrl(url);
        return true;

    }
 });

 webview.setWebChromeClient(new WebChromeClient(){
   public boolean shouldOverrideUrlLoading(WebView view, String url) {
       if (url != null && url.startsWith("http://")) {
           view.getContext().startActivity(
               new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
           return true;
       } else {
           return false;
       }
   }


  });

webview.loadUrl("http://www.sherdle.com/apphosting/dd");


 }

 @Override
 public void onBackPressed (){
    if(webview.canGoBack()) webview.goBack();
    else super.onBackPressed();
 }
于 2012-07-15T19:23:52.167 回答
0

首先确保你的布局中有 webview。还要确保清单中有以下行。

<uses-permission android:name="android.permission.INTERNET" />

然后你将它添加到你的 onCreate 中。它可能不是最好的,但足够了。

于 2012-07-15T18:53:37.863 回答
0

抱歉,但是如果您已经重写了完全相同的方法,您怎么会不明白在哪里插入那段代码呢?看看哪里写的:

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
    view.loadUrl(url);
    return true;
}

如果要更改上述行为,只需替换第一个代码片段中指定的这两行即可。

我有一种感觉,您并不真正了解匿名内部类,因为您还尝试设置WebChromeClient两次 - 这真的没有意义。我建议你对这件事做一些阅读。

此外,该shouldOverrideUrlLoading(...)方法由 a 定义WebViewClient,而不是 a WebChromeClient。这是一个简单地查阅文档的例子。

于 2012-07-15T19:28:24.990 回答