2013-01-17 41 views
2

我已經做了很多谷歌搜索,並沒有找到答案。我有一個webview作爲其他控件整體佈局的一部分。我使用webview顯示帶格式的文本(帶粗體和斜體字體的配方描述)和URL。網址指向Youtube並且完全符合(即http://www.youtube.com/watch?v=fyzyhuVgzRE)。當我點擊我的Web視圖中的鏈接時,Web視圖控件本身從佈局中消失(使頁面上的其餘控件完好無損),並且默認Web瀏覽器未啓動當我點擊一個嵌入式鏈接時WebView消失

它表現得好像我已將Web視圖的可見性設置爲GONE,但我不操縱佈局上的任何控件的可見性。

在logcat的輸出一個有趣的線索是從操作系統的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屬性中的雙引號加倍了。我的系統通過Web與MySQL數據庫集成,我必須在MySQL/PHP和Android/SQLite之間進行大量的數據轉換。在其中一次轉換中,我在href中雙引號逃過了引號。那麼應該是:

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

代替呈現爲:

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

在Web查看生成的URL看起來很好。它被正確地強調並且看起來像任何其他URL。奇怪的是,簡單的加倍報價導致了行爲。我會看看是否有像Android這樣的已知錯誤。至少WebView應該通過某種異常,而不是簡單地從屏幕上消失。

0

當webview嘗試加載它無法處理的內容時,我遇到了這種類型的行爲。攔截ref使用WebViewClient點擊併發送意圖在外部應用程序中打開此引用。 Check this thread.

+0

感謝Leonidos, 這正是我正在做的。我使用其他代碼示例修改了我的原始評論。 – Kaptkaos

相關問題