我想在Asynctask完成後刷新ListFragment。在我的Asynctask doInBackground方法中,我連接到數據庫並將元素添加到ArrayList。在onPostExecute方法我想的東西進入我的ListFragment這樣稱呼它是refreshData(方法):如何從Asynctask刷新ListFragment?
//REFRESH ARTISTFRAGMENT
@Override
public void onPostExecute(ArrayList<String> result) {
ArtistFragment artistFrag = new ArtistFragment();
artistFrag = (ArtistFragment) artistFrag.getSherlockActivity().getSupportFragmentManager().findFragmentById(R.id.frame_container);
if (artistFrag != null) {
artistFrag.refreshData(result);
}
}
但getSupportFragmentManager導致空指針異常!在我的片段
的refreshData方法是這樣的:
public void refreshData(ArrayList<String> data) {
artists = new ArrayList<String>(data);
this.artistAdpater.notifyDataSetChanged();
}
我發現非常類似的方法做我想要的確切的事情,但我不能找到一個解決我的問題。基本上它在這裏完成https://stackoverflow.com/a/16388650 - 但它不適合我這樣的工作。
有沒有人爲此解決方案或解決方法?
我的一個朋友找到了一個簡單的解決方法。他在AsyncTask中實現了一個構造函數。當實例化並執行AsyncTask移交片段時。 – f4b