質問

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


}
役に立ちましたか?

解決

また、これを行わないでください:最終的なアクティビティmyActivity = this;代わりに、webchromeclient.onprogresschanged内の「myact.this」を使用します

また、何らかの理由で「loaddata(data、mime、enc)」を使用することはできません。web.loaddatawithbaseurl( "fake:// host/path"、htmldata.tostring()、mimetype、エンコード、 ""); 「偽://ホスト/パス」は偽の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
}

その後、アプリが起動するたびにWebViewがロードされます。

他のヒント

view.lowurl(url)を移動します。スタートメソッドに。

ロードアイコンの場合は、WebViewClientでOnPagESTARTEDおよびONPAGEFININDED ONPAGESTARTEDをオーバーライドします。次に、WebChromeClient.OnProgressChangedを使用して進行状況バーを更新できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top