1

私は5つのタブでタブアクティビティを持っており、タブの1つでインターネット接続を検出しようとしており、インターネット接続がある場合はいくつかのアクティビティを実行しています..私が使用しているコードは

    // flag for Internet connection status
Boolean isInternetPresent = false;

// Connection detector class
ConnectionDetector cd;

  submit.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            isInternetPresent = cd.isConnectingToInternet();
                if (isInternetPresent) {
        // Internet Connection is Present
        // make HTTP requests
        Toast.makeText(ApplicationManagement.tabcontext, "Data Uploading to the Server", Toast.LENGTH_LONG).show();




    } else {
        // Internet connection is not present
        // Ask user to connect to Internet
        Toast.makeText(ApplicationManagement.tabcontext, "Please check your internet connection and TRY AGAIN", Toast.LENGTH_LONG).show();

    }
        }
    });

行で NullPointerException を取得していますisInternetPresent = cd.isConnectingToInternet();

および ConnectionDetector.java は次のとおりです。

public class ConnectionDetector {

private Context _context;

public ConnectionDetector(Context context){
    this._context = context;
}

public boolean isConnectingToInternet(){
    ConnectivityManager connectivity = (ConnectivityManager) _context.getSystemService(Context.CONNECTIVITY_SERVICE);
      if (connectivity != null) 
      {
          NetworkInfo[] info = connectivity.getAllNetworkInfo();
          if (info != null) 
              for (int i = 0; i < info.length; i++) 
                  if (info[i].getState() == NetworkInfo.State.CONNECTED)
                  {
                      return true;
                  }

      }
      return false;
}
}

なぜヌルポインター例外があるのか​​ わかりませんか??? タブは多くのコンテキストの問題を引き起こすため、タブを使用しているためですか??? 助けてください!

4

3 に答える 3

1

cdのインスタンスを初期化するのを忘れていますConnectionDetector。isConnectingToInternet() メソッドを呼び出す前に初期化します。

cd=new ConnectionDetector(Your_Current_Activity.this);
isInternetPresent = cd.isConnectingToInternet();
于 2013-05-27T09:09:36.037 に答える
0

はい、新しい を作成するのを忘れたため、NPE を取得しますConnectionDetector。そのコードでもう一度試してください:

ConnectionDetector cd = new ConnectionDetector(this);
于 2013-05-27T09:09:50.337 に答える
0

この方法を使用する ConnectionDetector のオブジェクトを作成してから使用する

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
 ConnectionDetector cd=new ConnectionDetector(this);
        isInternetPresent = cd.isConnectingToInternet();
            if (isInternetPresent) {
    // Internet Connection is Present
    // make HTTP requests
    Toast.makeText(ApplicationManagement.tabcontext, "Data Uploading to the Server", Toast.LENGTH_LONG).show();




} 
于 2013-05-27T09:10:17.210 に答える