Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
2.java文件中的NullPointerException_Java_Android - Fatal编程技术网

2.java文件中的NullPointerException

2.java文件中的NullPointerException,java,android,Java,Android,我在.java文件中遇到一个空指针异常,我不知道需要做什么来修复它们 这是我的日志猫,显示了抛出错误的位置: 09-05 11:17:19.569 12588-12588/au.gov.nsw.shellharbour.saferroadsshellharbour E/AndroidRuntime﹕ FATAL EXCEPTION: main java.lang.NullPointerException at android.content.ContextWrapper.get

我在.java文件中遇到一个空指针异常,我不知道需要做什么来修复它们

这是我的日志猫,显示了抛出错误的位置:

09-05 11:17:19.569  12588-12588/au.gov.nsw.shellharbour.saferroadsshellharbour E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.NullPointerException
        at android.content.ContextWrapper.getSystemService(ContextWrapper.java:370)
        at com.android.internal.app.AlertController$AlertParams.<init>(AlertController.java:801)
        at android.app.AlertDialog$Builder.<init>(AlertDialog.java:273)
        at au.gov.nsw.shellharbour.saferroadsshellharbour.GPSTracker.<init>(GPSTracker.java:116)
        at au.gov.nsw.shellharbour.saferroadsshellharbour.HomeScreen$1.onClick(HomeScreen.java:30)
        at android.view.View.performClick(View.java:2494)
        at android.view.View$PerformClick.run(View.java:9122)
        at android.os.Handler.handleCallback(Handler.java:587)
        at android.os.Handler.dispatchMessage(Handler.java:92)
        at android.os.Looper.loop(Looper.java:130)
        at android.app.ActivityThread.main(ActivityThread.java:3806)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:507)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
        at dalvik.system.NativeStart.main(Native Method)
GPSTracker.java

public class GPSTracker extends Service implements LocationListener {


private final Context mContext;

//flag for GPS status
boolean isGPSEnabled = false;
//flag for network status
boolean isNetworkEnabled = false;

boolean canGetLocation = false;

Location location;
double latitude; //latitude variable
double longitude; //longitude variable

//The minimum distance to change updates in meters

private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 1;
private static final long MIN_TIME_BW_UPDATES = 1000;

//declare location manager
protected LocationManager locationManager;


public GPSTracker(Context context){
    this.mContext = context;
    getLocation();
}

//function to get latitude
public double getLatitude(){
    if (location != null){
        latitude = location.getLatitude();

    }
    //must have a return (as its a function)
    return latitude;
}

public double  getLongitude(){
    if (location !=null){
        longitude = location.getLongitude();
    }

    return longitude;
}





public Location getLocation() {
    try {
        locationManager = (LocationManager) mContext.getSystemService(LOCATION_SERVICE);

        //getting GPS Status
        isGPSEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);

        //getting Network Status
        isNetworkEnabled = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);

        if (!isGPSEnabled && !isNetworkEnabled) {
            //No Network provider is enabled
        }else{
            this.canGetLocation=true;
            //first get location from Network Provider
            if(isNetworkEnabled){
                locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,MIN_TIME_BW_UPDATES,MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
                Log.d("Network", "Network");
                if (locationManager !=null){
                    location=locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
                    if(location !=null){
                        latitude = location.getLatitude();
                        longitude = location.getLongitude();

                    }
                }
            }

        }
    }
    catch (Exception e){
        e.printStackTrace();

    }
    return location;
}

//check if this is the best network provider
public boolean canGetLocation(){
    return this.canGetLocation;
}

//show GPs settings in alert box
AlertDialog.Builder alertDialogBuilder = //also being thrown here (line 116)
        new AlertDialog.Builder(this)
                .setTitle("GPS is Settings")
                .setMessage("GPS is not Enabled. Do you want to go to settings menu?")
                .setPositiveButton("Settings", new DialogInterface.OnClickListener() {
                    @TargetApi(Build.VERSION_CODES.HONEYCOMB)
                    public void onClick(DialogInterface dialog, int which) {
                        Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
                        mContext.startActivities(new Intent[]{intent});
                    }
                })
                .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.cancel();
                    }
                });

// Show the AlertDialog.
AlertDialog alertDialog = alertDialogBuilder.show();

如果有人能指出我做错了什么,以及如何修复它,我们将不胜感激。

我认为您需要将
mContext
作为
AlertDialog.Builder()
的参数

new AlertDialog.Builder(mContext)

这看起来不像是完整的堆栈跟踪。请发布其余部分。如果将
主屏幕替换为
getActivity()
?或者在这种情况下
getApplicationContext()
,会发生什么情况?
new AlertDialog.Builder(mContext)