現狀檢索是這樣的:問題是使用另一個類
- 活動A從B類
B類句柄獲取GPS位置調用getLocation()
方法。
2活動A應完成一旦B類已完成檢索GPS 的位置。
活性A調用類似:
B.getLocation()
this.finish()
即得到使用從B法的位置,然後完成自身。實際上,A在B有機會獲得位置之前關閉。
我該如何正確構造這個以便A等到B完成?
現狀檢索是這樣的:問題是使用另一個類
B類句柄獲取GPS位置調用getLocation()
方法。
2活動A應完成一旦B類已完成檢索GPS 的位置。
活性A調用類似:
B.getLocation()
this.finish()
即得到使用從B法的位置,然後完成自身。實際上,A在B有機會獲得位置之前關閉。
我該如何正確構造這個以便A等到B完成?
這裏的設計缺乏。事實上,你不能只爲另一個調用一個Activity
的方法,因爲目前只有一個Activity
可以在前臺。你的活動應該使用Intents
進行溝通。下面是它如何工作:
Activity A
使用Intent
Activity B
獲得位置開始Activity B
並將其返回到Activity A
,用setResult()
方法Activity A
從Activity B
讀取結果在其onActivityResult()
方法Activity A
完成這感覺就像是一個更好的實現。實際上,如果Activity B
確實獲取了位置,則可以簡單地將其實施爲Service
並將其綁定到Activity A
。希望這可以幫助。
確定你需要做一些回調機制,如果你熟悉基本的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();
}
}
}
希望你明白這一點...
嘗試像位置= B.getLocation();然後方法返回位置檢查,如果位置不爲空,則調用this.finish(); – 2012-02-28 14:38:44
@Samir這也行不通。出於某種原因,它會將該位置置於後臺。無論如何繼續執行進一步的代碼。即B.getLocation();然後檢查位置是否爲空。如果它是空的,它會繼續進行,它不會進行檢查。 – Neeta 2012-02-28 14:43:38
告訴我你想要什麼?我認爲你的方法是錯誤的,並創建prblm你能告訴我你想要什麼嗎? – 2012-02-28 14:45:25