情况是这样的:
- 活动 A 调用
getLocation()
B 类的方法。
B 类处理获取 GPS 位置。
2 活动 A 应在 B 类完成检索 GPS 位置后完成。
活动 A 调用类似:
B.getLocation()
this.finish()
即使用 B 中的方法获取位置,然后自行完成。实际上,A 在 B 有机会获得位置之前就关闭了。
我如何正确地构造它,以便 A 等到 B 完成?
情况是这样的:
getLocation()
B 类的方法。B 类处理获取 GPS 位置。
2 活动 A 应在 B 类完成检索 GPS 位置后完成。
活动 A 调用类似:
B.getLocation()
this.finish()
即使用 B 中的方法获取位置,然后自行完成。实际上,A 在 B 有机会获得位置之前就关闭了。
我如何正确地构造它,以便 A 等到 B 完成?
这里的设计欠缺。事实上,你不能只Activity
为另一个调用一个方法,因为此时只有一个Activity
可以在前台。您的活动应该使用Intents
. 这是它应该如何工作的:
Activity A
开始Activity B
使用Intent
Activity B
Activity A
使用setResult()
方法获取位置并将其返回给Activity A
Activity B
从其onActivityResult()
方法中读取结果Activity A
完成这感觉像是一个更好的实现。实际上,如果Activity B
确实只是获取位置,您可以简单地将其实现为 aService
并将其绑定到Activity A
. 希望这可以帮助。
好的你需要做一些回调机制,如果你熟悉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();
}
}
}
希望你明白这...