Аз съм доста нов в java и android studio. Опитвам се да стартирам нова дейност, когато потребителят е на определено разстояние от определена точка на карта.
Следният клас определя разстоянието на потребителите от всяка точка, когато потребителят е на определено разстояние (10 м), искам да се стартира нова дейност, където потребителят ще може да отговори на въпрос въз основа на местоположението.
Въпреки това, когато се опитам да започна новата дейност, получавам грешка:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: uk.ac.ucl.cege.cegeg077.ucfapwh.firstapp, PID: 6616
java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.Context android.content.Context.getApplicationContext()' on a null object reference
at android.content.ContextWrapper.getApplicationContext(ContextWrapper.java:106)
at uk.ac.ucl.cege.cegeg077.ucfapwh.firstapp.CustomLocationListener.onLocationChanged(CustomLocationListener.java:67)
at android.location.LocationManager$ListenerTransport._handleMessage(LocationManager.java:281)
at android.location.LocationManager$ListenerTransport.access$000(LocationManager.java:210)
at android.location.LocationManager$ListenerTransport$1.handleMessage(LocationManager.java:226)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5343)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:905)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:700)
Ето кода, който имам досега:
import android.app.Activity;
import android.content.Intent;
import android.location.Location;
import android.location.LocationListener;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
import java.lang.reflect.Array;
import java.util.ArrayList;
public class CustomLocationListener extends Map implements LocationListener {
public Map parentActivity ;
public ArrayList<GeoPoint> coordList;
// this method is called every time the user moves around - i.e. changes location
// it pops up a toast message with the new coordinates
public void onLocationChanged(Location location) {
// now measure distance from all the pre-set proximity alerts
for (int i = 0; i < coordList.size(); i++) {
// create GeoPoint object for each pair of coordinates
GeoPoint gp = coordList.get(i);
// create Location object
Location fixedLoc = new Location("one");
// get lat and lng values from GeoPoint object
Float lat = Float.valueOf(String.valueOf(gp.getLatitude()));
Float lng = Float.valueOf(String.valueOf(gp.getLongitude()));
// set location for proximity alert
fixedLoc.setLatitude(lat);
fixedLoc.setLongitude(lng);
// use Android distanceTo function to calculate the distances
float distance = location.distanceTo(fixedLoc);
Log.i("****DISTANCE****",String.valueOf(distance));
Log.i("*****FIXEDLOC****", fixedLoc.toString());
for (int j = 0; j < coordList.size(); j++ ) {
if (i == j && distance < 120) {
GeoPoint geoPoint = coordList.get(j);
Log.i("****PROXI LAT*****", geoPoint.getLatitude().toString());
Log.i("****PROXI LNG****", geoPoint.getLongitude().toString());
Intent quizIntent = new Intent(getApplicationContext(),Questions.class);
startActivity(quizIntent);
}
}
}
}
// these methods are called when the GPS is switched on or off
// and will allow the App to warn the user and then
// shut down without an error
public void onProviderDisabled(String s) {
}
public void onProviderEnabled(String s) {
}
// this method is required by the LocationListener
// we do not need to do anything here
// but in a full implementation this could be used to react when the GPS signal is not available
public void onStatusChanged(String arg0, int arg1, Bundle arg2) {
// TODO Auto-generated method stub
}
}
Извинения за лошото форматиране. Всяка помощ ще бъде високо оценена.