2010-12-03 18 views
1

インターネット接続が利用できない場合、接続がないことをユーザーに示すカスタムダイアログを表示します。それ以外の場合は、WebViewでページが読み込まれているときにProgressDialogを表示して、読み込み中にそのページが読み込まれていることを示します。インターネット接続がある場合、このコードは機能しますが、noがある場合はクラッシュし、エラーの原因を見つけることができません。Androidでインターネット接続をチェックするとエラーが発生する

package com.tariknotebook; 

import android.app.Activity; 
import android.app.Dialog; 
import android.app.ProgressDialog; 
import android.content.Context; 
import android.graphics.Bitmap; 
import android.net.ConnectivityManager; 
import android.net.NetworkInfo; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 
import android.widget.Button; 

public class NoteBook extends Activity { 
    /** Called when the activity is first created. */ 
    WebView web; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     web = (WebView) findViewById(R.id.browserMine); 
     web.setWebViewClient(new HelloWebViewClient()); 
     web.getSettings().setJavaScriptEnabled(true); 
    } 

    @Override 
    protected void onStart() { 
     // TODO Auto-generated method stub 
     super.onStart(); 
     web.loadUrl("http://m.seslisozluk.com"); 
    } 

    ProgressDialog dialog; 
    Dialog connDialog; 

    @Override 
    protected Dialog onCreateDialog(int id) { 

     switch(id) 
     { 
     case 1: 
      dialog = ProgressDialog.show(NoteBook.this, "Loading", 
      "Loading.. Please wait."); 

      break; 
     case 2: 
       connDialog = new Dialog(getApplicationContext()); 
       connDialog.setContentView(R.layout.connection); 
       connDialog.setTitle("No Internet Connection"); 

       Button closeButton = (Button) findViewById(R.id.closeButton); 
       closeButton.setOnClickListener(new closeButtonOnClickListener()); 
       connDialog.show(); 
      break; 
     } 


     return super.onCreateDialog(id); 
    } 

    private class closeButtonOnClickListener implements OnClickListener 
    { 
     public void onClick(View v) { 
      connDialog.dismiss(); 
     }; 
    } 

    private class HelloWebViewClient extends WebViewClient { 
     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      view.loadUrl(url); 
      return true; 
     } 
     @Override 
     public void onPageStarted(WebView view, String url, Bitmap favicon) { 
      // TODO Auto-generated method stub 
      super.onPageStarted(view, url, favicon); 
       ConnectivityManager conStatus = (ConnectivityManager) view.getContext().getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE); 
       if(conStatus.getActiveNetworkInfo().isConnected() && conStatus.getActiveNetworkInfo() != null) 
        showDialog(1); 
       else 
        showDialog(2); 
     } 

     @Override 
     public void onPageFinished(WebView view, String url) { 
      // TODO Auto-generated method stub 
      super.onPageFinished(view, url); 
      dialog.dismiss(); 

     } 

    } 
} 

そして、これも同様のエラーログです:あなたは、エラーメッセージを投稿すると

error log

+0

インターネット接続なしで起動すると(faviconを取得するためにWebサイトに接続できないため) 'Favicon'は' OnPageStarted() 'でnullになりますが、わかりませんその上に。また、そのメソッドを呼び出そうとすると 'conStatus'がnullである可能性もあります。あなたはこれをデバッガでステップ実行しようとしましたか? – eldarerathis

答えて

2

、あなたは相当ソースのどのラインを教えなければなりません。テキストエディタにコードを貼り付けて

が、私は信じているライン83は、次のとおりです。

if(conStatus.getActiveNetworkInfo().isConnected() && conStatus.getActiveNetworkInfo() != null)

これは強くconStatusがnullであり、あなたが存在しないオブジェクトのメソッドを呼び出すようにしようとしていることを示唆しています。

最初にnullでないことを確認する必要があります。

関連する問題