Проблемы с закрытием Активности после определения местоположения GPS с использованием другого класса - PullRequest
0 голосов
/ 28 февраля 2012

Ситуация такая:

  1. Деятельность A вызывает getLocation() метод из класса B.

Класс B. Обрабатывает местоположения GPS.

2 Задание A должно завершиться, когда класс B завершит поиск GPS место.

Деятельность A вызывает что-то вроде:

B.getLocation()
this.finish()

т.е. получает местоположение, используя метод из B, а затем заканчивает сам. В действительности, A закрывается до того, как у B появится шанс получить местоположение.

Как мне правильно структурировать это так, чтобы A ожидал, пока B не закончил?

Ответы [ 2 ]

1 голос
/ 28 февраля 2012

Дизайн здесь отсутствует.Фактически, вы не можете просто вызвать один метод Activity для другого, так как только один Activity может быть на переднем плане в данный момент.Ваши действия должны общаться, используя Intents.Вот как это должно работать:

  1. Activity A запускается Activity B с использованием Intent
  2. Activity B получает местоположение и возвращает его в Activity A, используя setResult() method
  3. Activity A читает результат из Activity B в его onActivityResult() method
  4. Activity A Finishes

Это похоже на лучшую реализацию.На самом деле, если Activity B просто получает местоположение, вы можете просто реализовать его как Service и связать его с Activity A.Надеюсь, это поможет.

0 голосов
/ 28 февраля 2012

хорошо, вам нужно выполнить некоторый механизм обратного вызова, если вы знакомы с Basic Java ... Здесь я просто пытаюсь дать вам обзор CallBack в Java ...

//Here is you class B :

class ClassB {

interface ILocationListerner {


 void setLocations(float lat, float long);


}



ILocationListerner mLocationListener = null;


/// Here is your static method that set Listerner and call by Activity A

public void static setLocationListerner(ILocationListerner listener){

this.mLocationListener = listener;


}


//Gel loaction method.

public static void getLocation(){

////
...
////

mLocationListener.setLocation(lat,lng);





}


}// ClassB ends here


/// Activity A

class ActivityA extends Activity {


 onCreate(){


 ClassB.setLocationListerner(new ILocationListerner {

      @Override
      void setLocations(float lat, float long){

      /// do your stuff and call finish();

      }

} );

ClassB.getLocation();


}

}

}

Надеюсь, вы понимаете это ...

...