2013-01-17 3 views
2

Google 검색을 많이 했으므로 답변을 찾지 못했습니다. 다른 컨트롤과 함께 전체 레이아웃의 일부로 webview가 있습니다. 필자는 webview를 사용하여 서식이 지정된 텍스트 (굵게 기울임 꼴로 된 레서피 설명)와 URL을 표시합니다. URL은 Youtube를 가리키며 정규화되어 있습니다 (예 : http://www.youtube.com/watch?v=fyzyhuVgzRE). 내 웹보기에서 링크를 클릭하면 레이아웃에서 웹보기 컨트롤 자체가 사라지고 페이지의 나머지 컨트롤은 그대로 남습니다. 기본 웹 브라우저 을 실행하지 않습니다.임베디드 링크를 클릭하면 WebView가 사라집니다.

웹보기의 가시성을 GONE으로 설정 한 것처럼 동작하지만 레이아웃의 컨트롤에 대한 가시성을 조작하지 않습니다.

로그 캣 출력에서 ​​한 가지 흥미로운 단서가 OS에서 INFO 수준 메시지입니다 :

MotionRecognitionManager .unregisterListener :/listener count = 0->0, 
[email protected] 

모든 아이디어를 어떻게이 문제를 일으킬까요?

편집 여기

은 어떻게 설정 활동의에서 onCreate() 메소드의 웹보기 :

webView1 = (WebView)findViewById(R.id.webView1); 
webView1.getSettings().setJavaScriptEnabled(true); 
webView1.getSettings().setAllowFileAccess(true); 
webView1.setWebViewClient(new MyWebViewClient()); 

그리고 MyWebViewClient 클래스 다음

private class MyWebViewClient extends 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; 
     } 
    } 
} 

이상하게도 shouldOverrideUrlLoading은 호출되지 않습니다.

답변

1

음, 나는 마약입니다. 앵커의 href 속성에서 큰 따옴표가 두 배로 증가한 것으로 나타났습니다. 내 시스템은 웹을 통해 MySQL DB와 통합되므로 MySQL/PHP와 Android/SQLite간에 많은 데이터 변환이 필요합니다. 이러한 변환 중 하나에서 href의 인용 부호를 두 번 이스케이프 처리했습니다. 그래서 있었어야 : 웹 결과 URL이 좋은 모습보기

<a href=""http://some_web_site"">Link Text</a> 

:

<a href="http://some_web_site">Link Text</a> 

대신으로 렌더링되었다. 그것은 분명히 강조되었고 다른 URL과 같이 보입니다. 단순히 인용 부호를 두 배로하면 행동이 발생하지만 이상합니다. Android 용으로 알려진 버그가 있는지 알 수 있습니다. 적어도 WebView는 화면에서 단순히 사라지지 않는 어떤 종류의 예외를 통해 야합니다.

0

webview에서 처리 할 수없는 콘텐츠를로드하려고 할 때 이러한 유형의 동작이 발생했습니다. WebViewClient를 사용하여 참조를 가로 채고 외부 참조에서이 참조를 열려고 의도를 보냅니다. Check this thread.

+0

감사합니다. Leonidos, 그게 정확히 내가하고있는 일입니다. 추가 코드 샘플을 사용하여 원래 주석을 수정했습니다. – Kaptkaos

관련 문제