2011-03-20 5 views
-1

HTML 형식을 webview에로드하고 싶지만 저에게 맞지 않습니다. 임에도 불구하고 가능합니까? 이것은 내가 가진 코드입니다. 감사Jsoup HTML Form Webview

 package com.timetable; 

    import java.io.IOException; 

    import org.jsoup.Jsoup; 
    import org.jsoup.nodes.Document; 
    import org.jsoup.nodes.Element; 
    import org.jsoup.select.Elements; 

    import android.app.Activity; 
    import android.os.Bundle; 
    import android.view.KeyEvent; 
    import android.view.Window; 
    import android.webkit.WebChromeClient; 
    import android.webkit.WebView; 
    import android.webkit.WebViewClient; 

    public class Timetable extends Activity { 
     WebView mWebView; 
     String html = "<html><body>"; 
     Document docs; 

     public void main(String... args) { 

      try { 
       docs = Jsoup.connect("http://www.dcu.ie/timetables/search.shtml").get(); 
      } catch (IOException e) { 
      e.printStackTrace(); 
     } 

     Element table = docs.tagName("header-search"); 
     Elements tables = table.select("form"); 

     for (int i = 1; i < tables.size(); i ++) 
     { 
      html += tables.get(i).toString() ; 
      /*while (tables.get(i).text() == "") 
      i++; 
      html += "<tr>" + tables.get(i).toString(); 
      while (tables.get(i+1).text() == "") 
      i++; 
      html +=tables.get(i+1).toString() + "</tr>"; 
      i++;*/ 
     } 

     html += "</html></body>"; 

    } 

    public void onCreate(Bundle savedInstanceState) { 
     main(); 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     getWindow().setFeatureInt(Window.FEATURE_PROGRESS, Window.PROGRESS_VISIBILITY_ON); 
     mWebView = (WebView) findViewById(R.id.webview); 
     mWebView.setWebViewClient(new TimeClient()); 

     mWebView.setInitialScale(1); 
     mWebView.getSettings().setJavaScriptEnabled(true); 
     mWebView.getSettings().setDomStorageEnabled(true); 
     mWebView.loadData(html, "text/html", "utf-8"); 

     final Activity MyActivity = this; 
     mWebView.setWebChromeClient(new WebChromeClient() { 
     public void onProgressChanged(WebView view, int progress) 
     { 
      //Make the bar disappear after URL is loaded, and changes string to Loading... 
      MyActivity.setTitle("Loading..."); 
      MyActivity.setProgress(progress * 100); //Make the bar disappear after URL is loaded 

      // Return the app name after finish loading 
      if(progress == 100) 
       MyActivity.setTitle(R.string.app_name); 
      } 
     }); 
    } 

    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) { 
      mWebView.goBack();    
      return true; 
     } 
     return super.onKeyDown(keyCode, event); 
    } 
    private class TimeClient extends WebViewClient { 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 

      view.loadUrl(url); 




      return true; 
     } 
    } 


} 

답변

2

최종 활동 MyActivity = this; web.loadDataWithBaseURL를 (" 대신 또한"loadData (데이터, 마임, ENC)은 "어떤 이유로 당신이 사용해야 할 어차피 웹보기를 가진 잡았다가"MyActivity.this는 "내부

을 WebChromeClient.onProgressChanged 사용 fake : // host/path ", htmldata.toString(), mimetype, encoding," "); "fake : // host/path"는 가짜 URL이지만 홈페이지 나 다른 것을 사용할 수도 있습니다.

그래서 뭔가 같은 :

public void onCreate(Bundle savedInstanceState) { 


    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    getWindow().setFeatureInt(Window.FEATURE_PROGRESS, Window.PROGRESS_VISIBILITY_ON); 
    mWebView = (WebView) findViewById(R.id.webview); 
    mWebView.setWebViewClient(new TimeClient()); 

    mWebView.setInitialScale(1); 
    mWebView.getSettings().setJavaScriptEnabled(true); 
    mWebView.getSettings().setDomStorageEnabled(true); 
    //mWebView.loadData(html, "text/html", "utf-8"); 

    //final Activity MyActivity = this; 
    mWebView.setWebChromeClient(new WebChromeClient() { 
    public void onProgressChanged(WebView view, int progress) 
    { 
     //Make the bar disappear after URL is loaded, and changes string to Loading... 
     MyActivity.setTitle("Loading..."); 
     MyActivity.setProgress(progress * 100); //Make the bar disappear after URL is loaded 

     // Return the app name after finish loading 
     if(progress == 100) 
      MyActivity.this.setTitle(R.string.app_name); 
     } 
    }); 
} 

public void onStart() { 
    main(); 
    mWebView.loadData("fake://host/path",html, "text/html", "utf-8"); 
} 

public void onStop() { 
    // some JSoup disconnect code 
} 

다음 웹보기 앱이 출시 될 때마다로드됩니다.

0

이동 view.loadUrl (URL); onStart 메소드에 추가하십시오.

로드 아이콘 인 경우 WebViewClient에서 onPageStarted &을 (를) PageFinished에서 재정의하십시오. WebChromeClient.onProgressChanged를 사용하여 진행률 표시 줄을 업데이트 할 수 있습니다.

+0

미안하지만 이해가되지 않습니까? 내 onCreate 메소드로 이동 하시겠습니까? 어떻게 작동할까요? – dbaby7

+0

당신이 문서를 더 잘 읽어야한다고 생각합니다 : – siliconeagle

+0

http://developer.android.com/reference/android/app/Activity.html – siliconeagle