Zrobiłem to na takiej zasadzie. W klasie Trackera zapisuje mi z bazy do listy nazwy obiektów:
db = new DatabaseHandler(context); //laczymy sie z baza
lokalizacje = db.getAllLocation();// pobieramy wszystkie lokalizacje z bazy
if (!lokalizacje.isEmpty() && lokalizacje!=null) {
for (Lokalizacje lok : lokalizacje) {
String newDesc = lok.getDescription();
String newName = lok.getLocation();
spisDesc.add(newDesc);
spisName.add(newName);
Później w metodzie OnLocationChanged() przy warunku, gdy dystans jest mniejszy bądź równy 50 pobiera z Listy elementy i przesyła z serwisu do aktywności FullscreenActivity:
public void onLocationChanged(Location location) {
for(int i=0; i < spisLat.size();i++) {
double LatEnd = spisLat.get(i);
double LongEnd = spisLon.get(i);
Location staticLoc = new Location("Static");
staticLoc.setLatitude(LatEnd);
staticLoc.setLongitude(LongEnd);
double distance = location.distanceTo(staticLoc);
String d = Double.toString(distance);
if (distance <= 50)
{
String a = spisDesc.get(i); // opis miejscowek
String b = spisName.get(i); //nazwy miejsc
Log.d("Nazwa", b);
Intent mIntent = new Intent(this, FullscreenActivity.class);
Bundle extras = mIntent.getExtras();
extras.putString("new", b);
W klasie aktywności odbieranie i zapis do ListView wygląda tak:
String locations;
//(...)
list = (ListView) findViewById(R.id.listView1);
Intent myIntent = getIntent();
if (myIntent !=null && myIntent.getExtras()!=null){
locations = myIntent.getExtras().getString("new");
ArrayList<String> Lista = new ArrayList<String>();
Lista.addAll( Arrays.asList(locations) );
adapter = new ArrayAdapter<String>(this, R.layout.row, Lista);
list.setAdapter(adapter);
}
Gdy tylko dystans spełnia warunek w "<=50" wywala apkę, a w logu zgłasza błąd NullPointerExcepction:
//java.lang.NullPointerException
at android.content.ContextWrapper.getPackageName(ContextWrapper.java:135)
at android.content.ComponentName.<init>(ComponentName.java:77)
at android.content.Intent.<init>(Intent.java:3813)
at com.example.michal.mobilnyprzewodnik.GPSTracker.onLocationChanged(GPSTracker.java:238)
at android.location.LocationManager$ListenerTransport._handleMessage(LocationManager.java:279)
at android.location.LocationManager$ListenerTransport.access$000(LocationManager.java:208)
at android.location.LocationManager$ListenerTransport$1.handleMessage(LocationManager.java:224)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
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:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)//
Mógłby mi ktoś pomóc naprawić ten błąd ?