2014-07-25 3 views
0

webview를 만들 때 기기가 기본 웹 브라우저를 열지 않고도 상호 작용할 수있는 Android 앱을 만들려고합니다. 나는 다른 질문을 여기에서 보았고 나는 온라인에서 본 몇 가지 다른 조언을 따라이 코드를 만들었다. 그러나 내 코드가 작동하지 않습니다. 뭐가 잘못 됐어? 여전히 구문 오류가 있습니다, 여기에 Android 오류 Webview가 작동하지 않습니다.

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

내 편집입니다 : 여기

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은 다음과 같습니다

여기 내 활동 코드입니다. 구문과 관련하여 내가 뭘 잘못하고 있는지 알 수 없습니다.

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(..) 메소드를 호출 할 필요가 있습니다. 당신의 WebViewClient 시도가 하드 코드 된 URL을로드 할 경우

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

, BTW, 그것을 잘 작동하지 않습니다. "https://www.facebook.com"을로드하려면 "https://www.google.com"을 다시로드한다고 가정 해 보겠습니다. 따라서 WebView은 매번 매개 변수로 주어진 URL을로드해야합니다.

그리고 더 많은 것은 응용 프로그램이 인터넷에서 콘텐츠를로드 할 수 있도록 AndroidManifest.xml에 대한 사용 권한을 지정해야합니다.

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

위의 허가를 추가하는 것을 잊지 마십시오.

희망 사항. 도움이 될 수 있습니다.

+0

내 일식은 여전히 ​​코드가 구문 오류로 가득 차 있다는 말을 계속하고있다. 무엇이 잘못 될 수 있습니까? 당신이 제공 한 첫 번째 부분조차도 구문 오류가 3 개 있습니다. \t WebView myWebView = (WebView) findViewById (R.id.webView1); \t myWebView.setWebViewClient (새 WebViewClient() { \t @Override \t 공공 부울 shouldOverrideUrlLoading (웹보기보기, 문자열 URL) { \t view.loadUrl (URL) \t 반환 거짓; \t} \t}); } – user3831298

-1

너는 이와 비슷한 것을 원한다.

shouldOverrideUrlLoading(WebView: view, String webPage) 

그런 추가

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

을 변경 :

,536 :

view.loadUrl(webPage); 
return false; 

그래서 최종 코드는 같은이 보일 것이다

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