我有一个包含三个片段的活动,我需要从第二个片段更新第三个片段中的listview,但它给我空指针异常,
从第二个片段,我有一个按钮,它的onclick,我喜欢,
Fragment3 fragment3 = new Fragment3();
fragment3.reload(fragment3.getActivity());
然后在另一边(fragment3),我正在使用,
public void reload(Activity activity) {
// TODO Auto-generated method stub
thisContext = activity;
mList = getdata();
if(mList !=null && mList.size() > 0 ) {
if(listAdapter !=null){
listAdapter.notifyDataSetChanged();
} else {
listAdapter = new CustomListAdapter(thisContext, mList);
setListAdapter(listAdapter);
}
}
}
当我调试时,我的上下文为空,请帮忙!
答案 0 :(得分:1)
要扩展Ascorbin的答案,您将创建一个与您当前活动无关的Fragment3的新实例。
记录了与其他碎片通信的方法here。
简而言之,您应该让您的Activity 获取Fragment3的现有实例并调用该Fragment的reload
方法。
答案 1 :(得分:0)
使用
创建新片段时Fragment3 fragment3 = new Fragment3();
它尚未附加到活动,所以
fragment3.getActivity()
将为空。
假设您在Activity中执行代码的第一部分,请执行
Fragment3 fragment3 = new Fragment3();
fragment3.reload(getApplicationContext());
如果你没有创建一个新的片段但是使用了一个旧的fragment3实例并只更新现有的ListView
,那么imho会更好。