0

これは、Url の読み込みを行う最初のクラスです。

public class HelloWebViewClient extends WebViewClient
{    
     @Override
     public boolean shouldOverrideUrlLoading(WebView view, String url)
     {
         view.loadUrl(url);
         return true;
     }
}

これは、Web ビューでデータが移動しているアクティビティ クラスです。

public class detailedview extends Activity
{
    WebView mWebView;
    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.detailedview);
        GetSet gs = new GetSet();

        String title = gs.getTitle();
        String desc = gs.getDesc();

        mWebView = (WebView) findViewById(R.id.webview);
        mWebView.getSettings().setJavaScriptEnabled(true);
        mWebView.getSettings().setBuiltInZoomControls(true);
        mWebView.getSettings().setSupportZoom(true);
        mWebView.getSettings().setTextSize(TextSize.SMALLER);
        mWebView.loadDataWithBaseURL("", "<p  align=\"justify\"><b> " + title+"</p></b><p align=\"justify\"><br>"+ desc + "</p></br>", "text/html", "utf-8", "");
        mWebView.setWebViewClient(new HelloWebViewClient());
    }
}

アクティビティにデータをロードするためのプログレス バーを配置したいのですが、いろいろ試しましたが、できません。

私のコードに従ってデータを読み込んでいる間に進行状況バーを表示できるように、コードを書くか、コードを投稿してください。

4

3 に答える 3

1

このコードをコードに追加します

ProgressDialog pd = new ProgressDialog(detailedview .this);
                                       ^^^^^^^^^^^^
        pd.setMessage("Loading...");
        pd.show(); <-----

mWebView.setWebViewClient(new WebViewClient() {
^^^^^^^^    

@Override 
public void onPageFinished(WebView view, String url) { <-----
     super.onPageFinished(view, url);
     pd.dismiss(); <-----
   }
});
-------------------------------------------------------------------------------


public class detailedview extends Activity
{
    WebView mWebView;
    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.detailedview);
        ProgressDialog pd = new ProgressDialog(detailedview .this);

        pd.setMessage("Loading...");
        pd.show(); 

       mWebView.setWebViewClient(new WebViewClient() {


@Override 
public void onPageFinished(WebView view, String url) { 
     super.onPageFinished(view, url);
     pd.dismiss(); 
   }
});
        GetSet gs = new GetSet();

        String title = gs.getTitle();
        String desc = gs.getDesc();

        mWebView = (WebView) findViewById(R.id.webview);
        mWebView.getSettings().setJavaScriptEnabled(true);
        mWebView.getSettings().setBuiltInZoomControls(true);
        mWebView.getSettings().setSupportZoom(true);
        mWebView.getSettings().setTextSize(TextSize.SMALLER);
        mWebView.loadDataWithBaseURL("", "<p  align=\"justify\"><b> " + title+"</p></b><p align=\"justify\"><br>"+ desc + "</p></br>", "text/html", "utf-8", "");
      //  mWebView.setWebViewClient(new HelloWebViewClient());
    }
}
于 2012-06-18T09:04:05.267 に答える
0

最初に1つのクラスにDownloadWebPageTaskと言わせます

これをuroncreateメソッドに入れます

GetSet gs = new GetSet();

    String title = gs.getTitle();
    String desc = gs.getDesc();

    mWebView = (WebView) findViewById(R.id.webview);
    mWebView.getSettings().setJavaScriptEnabled(true);
    mWebView.getSettings().setBuiltInZoomControls(true);
    mWebView.getSettings().setSupportZoom(true);
    mWebView.getSettings().setTextSize(TextSize.SMALLER);

このクラスのオブジェクトをこのように作成します

DownloadWebPageTask task = new DownloadWebPageTask(); task.execute(); 注:** task.execute(); urクラスを「DownloadWebPageTask」と呼びます。これは、コードの任意の行から開始できます。これで、これをonCreateメソッドに記述しました。

そしてここにあなたのクラスがあります

private class DownloadWebPageTask extends AsyncTask<String, Void, String> {

     private final ProgressDialog dialog = new ProgressDialog(Home.this);

      // can use UI thread here
      protected void onPreExecute() {
         this.dialog.setMessage("Loading...");
         this.dialog.show();
      }
    @Override
    protected String doInBackground(String... urls) {
        String response = "";

      mWebView.loadDataWithBaseURL("", "<p  align=\"justify\"><b> " + title+"</p></b><p align=\"justify\"><br>"+ desc + "</p></br>", "text/html", "utf-8", "");

        return response;
    }

    @Override
    protected void onPostExecute(String result) {
         if (this.dialog.isShowing()) {
                this.dialog.dismiss();
           }

             mWebView.setWebViewClient(new HelloWebViewClient());
    }


}   

注:**ポストエグゼキュートメソッドよりもプログレスバーを使用する場合は常に、プログレスバーが表示されるまですべてのバックグラウンドプロセスが実行され、データのダウンロードが完了するとすぐにonPostExcuteメソッドが呼び出されます。データは外部サーバーからダウンロードされます。 webviewに保存されるか、uはそれを使って何でもできます。それでも質問が見つかった場合は、幸運を祈るAamirkhanIを教えてください。

于 2012-06-18T09:38:06.527 に答える
0

以下のコードを使用できます

public class Grab extends Activity {

WebView view;
private ProgressDialog progressDialog = null;


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.grab);

    view = (WebView) findViewById(R.id.WebView01);
    view.setBackgroundColor(0);  // set the background transparent 

    progressDialog = ProgressDialog.show(view.getContext(), "Loading...", "Loading...");
    progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER    );

    view.setWebChromeClient(new MyWebChromeClient());
    view.getSettings().setJavaScriptEnabled(true);
    view.setWebViewClient(new MyWebViewClient());
    view.loadUrl("http://www.wepware.com/web/apps/jots.do");
}


private class MyWebViewClient extends WebViewClient {
    @Override
     public boolean shouldOverrideUrlLoading(WebView view, String url)      //override WebViewClient method to open url in activity
    {
        view.loadUrl(url);
        return true;
    }
}

private class MyWebChromeClient extends WebChromeClient {
    @Override
    public void onProgressChanged(WebView view, int newProgress) {
        if(progressDialog!=null){
            if ( newProgress >=80 ) {
                progressDialog.dismiss();
            } else {
                progressDialog.setMessage(newProgress + " % loaded");
            }
        }
        super.onProgressChanged(view, newProgress);
    }
}
}
于 2012-06-18T09:06:36.587 に答える