2012-08-28 1 views
2

PopupWindow 내에 WebView를 포함하려고 시도 중입니다. WebView는 Wikipedia 페이지를 표시합니다.Android Webview Simulator 대 PopupWindow 내의 장치

흥미롭게도 WebView는 시뮬레이터를 사용할 때 의도 한대로 작동합니다. 내 테스트 장치 (원래 ASUS Transformer)에서 응용 프로그램을 사용할 때 팝업 창에 웹 페이지가 표시되는 대신 팝업이 나타나고 내 로더가로드 진행률을 표시하지만 기본 웹 브라우저가 나타나 웹 페이지를 표시합니다 . 다시 말하지만, 팝업 창 내에 페이지가 표시되는 시뮬레이터에서 의도 한대로 작동합니다. 나는 여기에 많은 게시물을 포함하여 많은 사이트를 보았고, 나는 아무것도 시도하지 않았다. 나는 다른 누군가가 자신의 앱 개발 중 하나에서 이것을 보길 바란다.

I 버튼, PopupWindow 및 웹보기의 설정에 구현 한 코드는 다음과 같습니다

WikiButton = (ImageButton)findViewById(R.id.WikiButton); 
htmlProgress = (ProgressBar)elemWebView.findViewById(R.id.htmlProgressBar); 

htmlShowing = -1; 

// Necessary for the Info Popup window 
infoWebViewPopup = new PopupWindow(infoWebView = inflater.inflate(R.layout.property_info_layout, null, false), 1105, 685, true); 
infoWebViewPopup.setInputMethodMode(PopupWindow.INPUT_METHOD_NEEDED); 
infoWebViewPopup.setFocusable(false); 

infoWebHTMLView = (WebView)infoWebView.findViewById(R.id.infoWebHTMLView); 
WebSettings mySettingsInfo = elemWebHTMLView.getSettings(); 
mySettingsInfo.setJavaScriptEnabled(true); 

Button 구성 작업 코드는 다음과 같습니다

WikiButton.setOnClickListener(new View.OnClickListener(){ 
    infoWebHTMLView.clearView(); 

    String urlToGet = "http://en.wikipedia.org/wiki/" + "SOME OTHER STRING HERE"; 

    // Load the URL into the web view 
    infoWebHTMLView.loadUrl(urlToGet); 

    // Calculate posX and posY for placement 
    infoWebViewPopup.setOutsideTouchable(false); 
    infoWebViewPopup.showAtLocation(findViewById(R.id.properties_view), Gravity.LEFT | Gravity.TOP, posX, posY); 
} 

다른 코드는 내가 웹보기 위해 시행하고있다 :

infoWebHTMLView.setWebChromeClient(new WebChromeClient() { 
    public boolean shouldOverrideUrlLoading(WebView view, String url){ 
     view.loadUrl(url); 

     return true; 
    } 

    public void onProgressChanged(WebView view, int progress) { 
     elemWebHTMLView.invalidate(); 

     htmlProgress.setProgress(progress); 

     if(progress >= 100){ 
      htmlProgress.setVisibility(View.INVISIBLE); 
     }else{ 
      htmlProgress.setVisibility(View.VISIBLE); 
     } 
    } 
}); 

PopupWindow, WebView 및 Button은 모두 XML 파일에 정의되어 있습니다.

모든 도움을 주시면 감사하겠습니다.

답변

1

WebChromeClient가 아니라 WebViewClient를 사용해야합니다.

메소드를 재정의 할 때 @Override 주석을 추가해야합니다. 메소드를 재정의했다고 생각하면 실제로는 존재하지 않지만 오류가 발생합니다.

+0

감사합니다. 감사합니다 !!! 흥미롭게도 @Override는별로 중요하지 않지만이 오버라이드는 실제로 내 문제를 해결했습니다. – trumpetlicks