が、実際にそのままリリースしたところ、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 件のコメント:
コメントを投稿