0

情况是这样的:

  1. 活动 A 调用getLocation()B 类的方法。

B 类处理获取 GPS 位置。

2 活动 A 应在 B 类完成检索 GPS 位置后完成。

活动 A 调用类似:

B.getLocation()
this.finish()

即使用 B 中的方法获取位置,然后自行完成。实际上,A 在 B 有机会获得位置之前就关闭了。

我如何正确地构造它,以便 A 等到 B 完成?

4

2 回答 2

1

这里的设计欠缺。事实上,你不能只Activity为另一个调用一个方法,因为此时只有一个Activity可以在前台。您的活动应该使用Intents. 这是它应该如何工作的:

  1. Activity A开始Activity B使用Intent
  2. Activity BActivity A使用setResult()方法获取位置并将其返回给
  3. Activity AActivity B从其onActivityResult()方法中读取结果
  4. Activity A完成

这感觉像是一个更好的实现。实际上,如果Activity B确实只是获取位置,您可以简单地将其实现为 aService并将其绑定到Activity A. 希望这可以帮助。

于 2012-02-28T14:45:46.393 回答
0

好的你需要做一些回调机制,如果你熟悉Basic Java..这里我只是想给你一个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();


}

}

}

希望你明白这...

于 2012-02-28T17:15:10.143 回答