が、実際にそのままリリースしたところ、BadTokenExceptionが3件、エラー報告として上がって来ましたので、
改訂版を紹介いたします。
package名は各自変更をお願いします。
MyWebView.java
package com.shonanshachu.webclient; import android.app.ProgressDialog; import android.graphics.Bitmap; import android.webkit.WebView; import android.webkit.WebViewClient; public class MyWebViewClient extends WebViewClient{ private ProgressDialog progress; public MyWebViewClient(Context context){ super(); progress = new ProgressDialog(context); progress.setMessage("Now Loading..."); } public void onPageStarted(WebView view, String url, Bitmap favicon) { progress.show(); } public void onPageFinished(WebView view, String url){ if(progress != null && progress.isShowing()){ progress.dismiss(); } progress = null; } }
前回との変更は、まずコンストラクタの引数にContextが付いていること。
次に、progressをコンストラクタで宣言している点になります。
まず、Contextに関してですが、前回は
public void onPageStarted(WebView view, String url, Bitmap favion){ progress = new ProgressDialog(view.getContext()); progress.setMessage(message); progress.show(); }
としておりました。
問題はview.getContext()時に発生。
getContext()で呼ばれるContextではなく、Activityを指定する必要があります。
なので、コンストラクタで指定しております。
呼び出し方は
ActivityMain.java
WebView wv = (WebView)findViewById(R.id.web_view); wv.setWebViewClient(new MyWebViewClient(this));
wvはグローバル変数にしておりますが、わかりやすくローカルで書いています。
この2行をonCreate()で呼んで完成です。
wv.loadUrl()は別の関数内なので、wvはグローバルの方が良いと思います。
改訂版を使用しているClick2Goをよろしくお願いします。
0 件のコメント:
コメントを投稿