我想在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