2011-12-28 4 views
0

내 안드로이드 응용 프로그램에서 새로운 에뮬레이터를 만들고 처음으로 웹보기에 쓰려고하면 활성화되지 않습니다. 나는 텍스트 필드에 글을 쓸 수 없어서 앱이 다운된다. 앱을 다시로드하면 모두 정상적으로 작동합니다.왜 Webview가 처음 시작될 때 충돌이 발생합니까?

코드 : 한 OnCreate에서

String url = "http://api.vkontakte.ru/oauth/authorize?client_id=2731649&scope=wall,notify,docs&" + 
      "redirect_uri=http://api.vkontakte.ru/blank.html&display=wap&response_type=token"; 
    WebViewClass wvClforVK = new WebViewClass(); 

: buttonclick에

webview= (WebView) findViewById(R.id.vkWebView); 
     webview.setWebViewClient(wvClforVK); 

:

webview.loadUrl(url); 
in wvClforVK 
@Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     view.loadUrl(url); 
      return true; 
     } 
+0

'findViewById (R.id.vkWebView)'를 호출하기 전에'setContentView (...)'를 호출하고 있습니까? – Squonk

+0

it.setContentView (R.layout.main); ? yes –

+0

네, 레이아웃 파일의 이름이'main.xml'이라면 그렇습니다. 당신이 코멘트에 보여줄 때'R.layout.'을 사용할 때 .xml 부분을 그것에 두지 않습니다. 'R.id.vkWebView'와 같은 컴포넌트를 사용하기 전에 컨텐츠 뷰를 설정해야합니다. 내용보기를 설정하기 전에 findViewById를 사용하면'null'을 반환합니다. – Squonk

답변

1

당신은 당신의 R. 같은 구성 요소를 사용하기 전에 내용보기를 설정해야합니다 id.vkWebView. 콘텐츠 뷰를 설정하기 전에 findViewById(...)을 사용하면 null이 반환됩니다.

setContentView(R.layout.main); 

는 ... 레이아웃 파일을 가정하는 것은 main.xml라고하지만 R.layout를 사용할 때 당신은 그것을에 .XML 부분을 넣지 마십시오 ... 내용보기 전화를 설정합니다. 대개 활동의 onCreate(...) 메소드 초기에 컨텐츠 뷰를 설정합니다. 이 작업은 종종 super.onCreate(...);의 호출 직후에 수행됩니다.

+0

이 대답은 내가 가지고있는 문제를 해결했습니다. 충돌을 일으키는 loadUrl 시도 후에 setContentView 호출이있었습니다. 내 WebView 코드가 실행되기 전에 setContentView를 이동하면 충돌이 발생했습니다. – Lev

1

android 4.2.2, 원하는 URL을로드하기 전에 loadUrl ("about : blank")을 추가하십시오.

그래서 최종 코드는 내가 매번 내 웹보기가 URL을로드하려고 안드로이드 4.2.2 충돌에 내 응용 프로그램을 실행할 때 loadUrl("about:blank")를 추가하기 전에

WebView webView = (WebView)findViewById(R.id.my_web_view); 
webview.loadUrl("about:blank"); 
webview.loadUrl("https://google.com"); 

입니다.

+0

이것 덕분에 나를 위해 충돌을 해결합니다. 그러나 이것이 왜 작동합니까!? : / – QuantumTiger

관련 문제