2015-03-25 59 views
0

這是我收到我在嘗試檢查internetConnection時遇到java.lang.NullPointerException?

03-25 12:11:15.019 21907-21907/np.com.tester.wlms E/AndroidRuntime﹕ FATAL EXCEPTION: main 
     Process: np.com.tester.wlms, PID: 21907 
     java.lang.RuntimeException: Unable to start activity ComponentInfo{np.com.tester.wlms/np.com.tester.wlms.MainActivity}: java.lang.NullPointerException 
       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2237) 
       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2286) 
       at android.app.ActivityThread.access$800(ActivityThread.java:144) 
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1246) 
       at android.os.Handler.dispatchMessage(Handler.java:102) 
       at android.os.Looper.loop(Looper.java:212) 
       at android.app.ActivityThread.main(ActivityThread.java:5137) 
       at java.lang.reflect.Method.invokeNative(Native Method) 
       at java.lang.reflect.Method.invoke(Method.java:515) 
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:902) 
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:718) 
       at dalvik.system.NativeStart.main(Native Method) 
     Caused by: java.lang.NullPointerException 
       at np.com.tester.wlms.MainActivity.onCreate(MainActivity.java:15) 
       at android.app.Activity.performCreate(Activity.java:5231) 
       at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2201) 
       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2286) 
       at android.app.ActivityThread.access$800(ActivityThread.java:144) 
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1246) 
       at android.os.Handler.dispatchMessage(Handler.java:102) 
       at android.os.Looper.loop(Looper.java:212) 
       at android.app.ActivityThread.main(ActivityThread.java:5137) 
       at java.lang.reflect.Method.invokeNative(Native Method) 
       at java.lang.reflect.Method.invoke(Method.java:515) 
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:902) 
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:718) 
       at dalvik.system.NativeStart.main(Native Method) 

的錯誤,這是我的internetConnectionCheck.java

import android.content.Context; 
import android.net.ConnectivityManager; 
import android.net.NetworkInfo; 
import android.support.v7.app.ActionBarActivity; 


public class InternetConnectionCheck extends ActionBarActivity{ 
    public boolean isInternetOn() //checking internet for connection 
    { 
     ConnectivityManager con = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
     NetworkInfo networkInfo = con.getActiveNetworkInfo(); 
     // ARE WE CONNECTED TO THE NET 
     if (networkInfo != null) { 
      // MESSAGE TO SCREEN FOR TESTING (IF REQ) 
      //Toast.makeText(this, connectionType + 」 connected」, Toast.LENGTH_SHORT).show(); 
      return true; 
     } else { 
      return false; 
     } 

    } 
} 

這是MainActivity.java

import android.os.Bundle; 
import android.support.v7.app.ActionBarActivity; 
import android.widget.Toast; 


public class MainActivity extends ActionBarActivity { 
    private InternetConnectionCheck internetConnectionCheck; 
    private String internetCheck; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     internetCheck=String.valueOf(internetConnectionCheck.isInternetOn()); 

     Toast.makeText(this,internetCheck, Toast.LENGTH_SHORT); 

    } 



} 
+0

http://stackoverflow.com/questions/218384/what-is-a-null-pointer-exception-and-how-do-i-fix-it – 2015-03-25 06:45:44

回答

0

的問題是在這裏:

private InternetConnectionCheck internetConnectionCheck; 

在這裏

internetConnectionCheck.isInternetOn() 

InternetConnectionCheck呼叫連接是你的目標和你定義的變量名internetConnectionCheck它。但你永遠不會用某種東西來初始化對象。因此它只是空。只要您撥打方法.isInternetOn(),您將永遠收到NullPointerException。如果你想解決這個問題,你需要創建一個對象的實例。

private InternetConnectionCheck internetConnectionCheck = new InternetConnectionCheck(); 
1

必須創建的InternetConnectionCheck實例。

否則isInternetOn必須是靜態的方法

public statis boolean isInternetOn() 
{ 

} 
0

問題是,InternetConnectionCheck未初始化你爲什麼越來越空例外。

試試這個

internetConnectionCheck.java

import android.content.Context; 
import android.net.ConnectivityManager; 
import android.net.NetworkInfo; 
import android.support.v7.app.ActionBarActivity; 


public class InternetConnectionCheck extends ActionBarActivity{ 
    public static boolean isInternetOn() //checking internet for connection 
    { 
     ConnectivityManager con = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
     NetworkInfo networkInfo = con.getActiveNetworkInfo(); 
     // ARE WE CONNECTED TO THE NET 
     if (networkInfo != null) { 
      // MESSAGE TO SCREEN FOR TESTING (IF REQ) 
      //Toast.makeText(this, connectionType + 」 connected」, Toast.LENGTH_SHORT).show(); 
      return true; 
     } else { 
      return false; 
     } 
} 
} 

MainActivity.java

import android.os.Bundle; 
import android.support.v7.app.ActionBarActivity; 
import android.widget.Toast; 


public class MainActivity extends ActionBarActivity { 
    private InternetConnectionCheck internetConnectionCheck; 
    private String internetCheck; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     internetCheck=String.valueOf(InternetConnectionCheck.isInternetOn()); 

     Toast.makeText(this,internetCheck, Toast.LENGTH_SHORT); 

    } 



} 
1
public class Utility { 
public static boolean isNetworkAvailable(Context context) { 
     ConnectivityManager cm = (ConnectivityManager) context 
       .getSystemService(Context.CONNECTIVITY_SERVICE); 
     NetworkInfo networkInfo = cm.getActiveNetworkInfo(); 
     if (networkInfo != null && networkInfo.isConnected()) { 
      return true; 
     } 
     return false; 
    } 
} 


//Use it in your activity 
boolean connected = Utility.isNetworkAvailable(this); 
+0

謝謝你這麼多這麼快答覆和解決方案:) – 2015-03-25 06:58:15

相關問題