が、実際にそのままリリースしたところ、BadTokenExceptionが3件、エラー報告として上がって来ましたので、
改訂版を紹介いたします。
package名は各自変更をお願いします。
MyWebView.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | 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に関してですが、前回は
1 2 3 4 5 | 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
1 2 | WebView wv = (WebView)findViewById(R.id.web_view); wv.setWebViewClient( new MyWebViewClient( this )); |
wvはグローバル変数にしておりますが、わかりやすくローカルで書いています。
この2行をonCreate()で呼んで完成です。
wv.loadUrl()は別の関数内なので、wvはグローバルの方が良いと思います。
改訂版を使用しているClick2Goをよろしくお願いします。
0 件のコメント:
コメントを投稿