2011-03-20 47 views
-1

我想加载一个HTML表单到webview中,但它不适用于我,我想知道它甚至可能吗?这是我的代码。 谢谢Jsoup HTML表单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

也 不这样做:final Activity MyActivity = this; 改用“MyActivity.this”里面WebChromeClient.onProgressChanged

也有一个与网页介面疑难杂症,你不能这样做“loadData(数据,哑剧,ENC)”出于某种原因,你需要使用: web.loadDataWithBaseURL(”假://主机/路径“,htmldata.toString(),mimetype,编码,”“); “假://主机/路径”是一个虚假的网址,但你也可以使用你的主页或其他东西。

所以像:

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 
} 

那么web视图将加载在每次应用启动时间。

0

move view.loadUrl(url);到你的onStart方法。

如果您是加载图标,请覆盖onPageStarted & onPageFinished in WebViewClient。那么你可以使用WebChromeClient.onProgressChanged来更新你的进度条。

+0

对不起,我不明白?将其移至我的onCreate方法?这将如何工作? – dbaby7 2011-03-20 23:55:33

+0

我认为你最好阅读文档: – siliconeagle 2011-03-21 01:00:13

+0

http://developer.android.com/reference/android/app/Activity.html – siliconeagle 2011-03-21 01:01:12