2014-07-25 64 views
0

我试图创建一个android应用程序,当创建一个webview时,它可以与设备互动而无需打开本机网页浏览器。我在这里查看了其他问题,并且我在网上看到了一些其他建议后创建了此代码。但是我的代码不起作用。什么似乎是错误的?Android错误Webview不工作

这里是我的活动代码:

import android.os.Bundle; 
import android.app.Activity; 
import android.content.Intent; 
import android.graphics.Color; 
import android.view.View; 
import android.webkit.WebSettings; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 
import android.widget.Button; 



public class SecondActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_second); 

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

      @Override 
      public void onClick(View v) { 
       Intent intent = new Intent(SecondActivity.this, MainActivity.class); 
       startActivity(intent); 
      } 

     }); 



     WebView myWebView = (WebView) findViewById(R.id.webView1); 
     myWebView.setWebViewClient(new WebViewClient(){   
      @Override 
      public boolean shouldOverrideKeyEvent(WebView view, KeyEvent event) { 
      view.loadUrl("https://www.google.com"); 
      return false; 
      } 
     }); 
    } 
} 

这里是我的xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context=".SecondActivity" > 

    <WebView 
     android:id="@+id/webView1" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_above="@+id/button1" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true" /> 

    <Button 
     android:id="@+id/button1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_centerHorizontal="true" 
     android:text="Back" /> 

</RelativeLayout> 

这里是我的编辑,还是有语法错误。我无法弄清楚我在语法方面做了什么错误。

WebView myWebView = (WebView) findViewById(R.id.webView1); 
myWebView.setWebViewClient(new WebViewClient() { 
     public boolean shouldOverrideUrlLoading("WebView: view, String, https://www.google.com/") { 
     view.loadUrl("https://www.google.com/"); 
     return false; 
     } 
    });};} 
+0

您需要包含logcat才能看到错误 – Darrell

+0

Eclipse将不允许我运行该应用程序。 – user3831298

+0

那么你的'Webview'中的字符串不包含在引号中''“' – Darrell

回答

3

正如我已经评论过的,你的代码中有语法错误。我已经修复了它,但是你错过了另一点。在重写shouldOverrideUrlLoading(WebView view, String url)方法时,不需要指定url。

以下代码片段提供了一个提示,说明如何覆盖方法。

WebView myWebView = (WebView) findViewById(R.id.webView1); 
myWebView.setWebViewClient(new WebViewClient(){  
    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     view.loadUrl(url); 
     return false; 
    } 
}); 

你安装后的WebViewClient你应该叫loadUrl(..)方法像以下。

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

顺便说一下,如果你的WebViewClient尝试装入硬编码的URL,这是行不通的罚款。假设您希望加载"https://www.facebook.com",它将再次加载"https://www.google.com"。因此,WebView必须每次加载作为参数给定的url。

还有一件事,您应该在您的AndroidManifest.xml上指定权限,以便应用程序从Internet加载内容。

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

不要忘记添加上述权限。

希望这可能有所帮助。

+0

我的eclipse仍然告诉我,代码充满了语法错误。可能会出现什么问题?即使你给的第一部分给出了3个语法错误。 \t WebView myWebView =(WebView)findViewById(R.id.webView1); \t myWebView.setWebViewClient(新WebViewClient(){ \t @覆盖 \t公共布尔shouldOverrideUrlLoading(web视图视图,字符串URL){ \t view.loadUrl(URL); \t返回假; \t} \t}); } – user3831298

-1

你想要这样的东西。

shouldOverrideUrlLoading(WebView: view, String webPage) 

然后加入

WebPage = "https://www.google.com/"; 

并改变

view.loadUrl(webPage); 
return false; 

所以最终代码会看起来像这样

shouldOverrideUrlLoading(WebView: view, String webPage){ 
    WebPage = "https://www.google.com/"; 
    view.loadUrl(webPage); 
    return false; 
}