首先,這是一個很好的做法,從異步任務訪問片段的方法?從異步任務訪問片段方法
我有一個異步任務,它會生成一個LatLng列表,用於在我的片段中繪製多段線。但是,如果我嘗試使用getter方法來獲取列表。
public List<LatLng> getList() {
return this.list;
}
我得到nullpointerexceptions
所以我必須片段內執行此,
while(list == null) { // FIXME delay because of this
list = getRoute.getList();
}
這違背了其後臺任務的目的。
有沒有一種方法可以從異步任務的post執行方法中調用方法?
@Override
protected void onPostExecute(OTPResponseUI otpResponse) {
Fragment.fragmentsMethod(getList());
mDialog.dismiss();
}
這樣我可以正確顯示過程對話框,並且不會留下用戶懸而它加載列表。
UPDATE 我試圖調用一個回調像this,但不執行我的片段中的回調函數。
UPDATE2 好吧,我剛剛通過的片段實例的異步任務能夠調用片段的方法。根據您的建議:
在您的自定義AsyncTask類中創建列表對象,然後將它返回給postExecute()方法中的Fragment。您可以通過直接呼籲片段實例(你會得到無論是通過構造的方法做它的工作,感謝
你能把你的'Fragment'實例傳遞給'AsyncTask'的構造函數嗎?另外,你的'AsyncTask'獲取列表以填充它?爲什麼不只是返回在'AsyncTask'中實例化的實例列表? –
@unluddite第一個,我該怎麼做?是的,'AsyncTask'只是用來填補它。我不認爲我可以在'AsyncTask'中返回一個填充列表,我可以嗎?這就是爲什麼我想到調用一種方法。它以前使用活動,'((ActivityName)mContext).method(getList());',我只想使用片段。 – linus