0

強制的に閉じると書かれているこのコードの問題は何ですか? 進行状況ダイアログの使用時にエラーが発生しました

ourBrow = (WebView) findViewById(R.id.wvBrowser);
ourBrow.setBackgroundColor(Color.parseColor("#000000"));
ourBrow.getSettings().setJavaScriptEnabled(true);
ourBrow.setWebViewClient(new WebViewClient() {
    ProgressDialog dialog;
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        dialog = ProgressDialog.show(Moile_gole.this, "",
                    "Loading. Please wait...", true);
        ourBrow.loadUrl(url);
        return true;
    }

    @Override
    public void onPageFinished(WebView view, String url) {
        dialog.dismiss();
            // HIDE PROGRESS DIALOG LOADING IT HAS FINISHED
        }

    });

    ourBrow.loadUrl("http://www.google.com");

ログキャット:

10-03 20:43:59.440: D/AndroidRuntime(304): Shutting down VM 10-03 20:43:59.440: W/dalvikvm(304):
threadid=1: thread exiting with uncaught exception (group=0x4001d800) 10-03 20:43:59.461: E/AndroidRuntime(304): FATAL EXCEPTION: main 
10-03 20:43:59.461: E/AndroidRuntime(304): java.lang.NullPointerException 
10-03 20:43:59.461: E/AndroidRuntime(304): at com.mobile.specification.Moile_Specification$2.onProgressChanged(Moile_Specifica‌​tion.java:68) 
10-03 20:43:59.461: E/AndroidRuntime(304): at android.webkit.CallbackProxy.handleMessage(CallbackProxy.java:358)
10-03 20:43:59.461: E/AndroidRuntime(304): at android.os.Handler.dispatchMessage(Handler.java:99) 
10-03 20:43:59.461: E/AndroidRuntime(304): at android.os.Looper.loop(Looper.java:123)
10-03 20:43:59.461: E/AndroidRuntime(304): at android.app.ActivityThread.main(ActivityThread.java:4627) 
10-03 20:43:59.461: E/AndroidRuntime(304): at java.lang.reflect.Method.invokeNative(Native Method) 
10-03 20:43:59.461: E/AndroidRuntime(304): at java.lang.reflect.Method.invoke(Method.java:521) 
10-03 20:43:59.461: E/AndroidRuntime(304): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
10-03 20:43:59.461: E/AndroidRuntime(304): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
10-03 20:43:59.461: E/AndroidRuntime(304): at dalvik.system.NativeStart.main(Native Method)
4

1 に答える 1

1

ダイアログが原因でNullPointerExceptionが発生したため、強制終了エラーが発生しました。shouldOverrideUrlLoading()メソッドは、WebView内のリンクがクリックされた場合にのみ呼び出され、webview.loadUrl(url)を介してWebページを読み込もうとした場合には呼び出されません。したがって、ここではダイアログが初期化されておらず、NullPointerExceptionが発生しています。

以下のサンプルのように、webchromeclientとProgressBar(pb)を使用して、Webページの読み込みの進行状況を表示することをお勧めします。

wv.setWebChromeClient(new WebChromeClient(){

         public void onProgressChanged(WebView view, int progress) 
         {

             pb.setProgress(progress);
             if(progress==100)
                 pb.setVisibility(View.GONE);
          }


    });
于 2012-10-03T15:40:36.200 に答える