Frage

Ich möchte ein HTML -Formular in WebView laden, aber es funktioniert nicht für mich und ich frage mich, ob es überhaupt möglich ist. Dies ist der Code, den ich habe. Vielen Dank

       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;
        }
    }


}
War es hilfreich?

Lösung

Tun Sie dies auch nicht: endgültige Aktivität myActivity = dies; Verwenden Sie stattdessen "myActivity.this" in webchromeclient.onprogressived

Außerdem gibt es eine gotcha mit Webview, die Sie "LoadData (Daten, Mime, ENC)" aus irgendeinem Grund nicht ausführen können: Web.loadDatawithbaseurl ("Fake: // Host/Path", htmldata.toString (), Mimetype, Codierung, ""); "Fake: // Host/Path" ist eine gefälschte URL, aber Sie können auch Ihre Homepage oder so etwas verwenden.

Also so etwas wie:

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
}

Dann lädt das WebView jedes Mal, wenn die App gestartet wird.

Andere Tipps

Ansicht verschieben.loadurl (URL); zu Ihrer OnStart -Methode.

Wenn Sie ein Ladesymbol waren, überschreiben Sie in WebViewClient onpaagestarted & onPageFined. Anschließend können Sie webchromeclient.onprogressived verwenden, um Ihre Fortschrittsleiste zu aktualisieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top