我使用 FragmentPagerAdapter 来切换片段。当进行片段切换时,我需要调用一些函数,并且在 OnPause 和 OnResume 中遇到了一些麻烦,所以根据 此 问题的建议,我实现了一个 OnPageSelectListener 接口:
public interface OnPageSelectListener {
void onPageSelected();
void onPageNotVisible();
}
每当该页面进入前台时,它都会调用OnPageSelected函数。这很好,但我想在我的适配器上调用一个函数。我认为这应该可以工作,但是我的适配器始终返回NULL(即使它已初始化并按照我的喜好加载了列表视图中的数据)。
public class AfterCheckFragment extends Fragment implements OnPageSelectListener{
private ListView listView;
private List<Check> checkList;
private CheckListAdapter adapter;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_check, container, false);
System.out.println("VIEW create called");
//(.. some other stuff, not relevant for question..)
//initializing the adapter
listView = (ListView) view.findViewById(R.id.listView);
adapter = new CheckListAdapter(checkList,getActivity(),trainPosition);
listView.setAdapter(adapter);
adapter.handleButtonVisibility();
return view;
}
@Override
public void onPageSelected() {
if(this.adapter != null) {
System.out.println("adapter not null");
this.adapter.checkForActive();
}else{
System.out.println("Adapter is NULL");
}
}
@Override
public void onPageNotVisible() { //page is moved to backgroung
System.out.println("AFTER not active any more ");
}
}
现在我的问题是:为什么当我返回到我的碎片时,适配器(或碎片中的任何其他对象)返回null?当fragmentPager被初始化时,片段的onActivityCreate函数被调用一次,但之后没有了,适配器返回null....