【发布时间】:2026-01-23 15:30:01
【问题描述】:
我使用 FragmentPagerAdapter 从片段切换。我需要在进行片段切换时调用一些函数并且在 OnPause 和 OnResume 方面遇到一些问题,所以正如THIS 问题所建议的那样,我已经实现了一个接口 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初始化时,会调用一次fragment的onActivityCreate函数,之后不再调用,并且适配器返回null....
【问题讨论】:
-
接口需要Fragment(AfterCheckFragment)和继承的接口进行数据通信,我看不到。有时片段会调用接口中的公共/受保护方法,我没有看到。请至少发布 OnPageSelectListener 的代码,也可能为相关的 Adapter 发布代码。
-
请发布适配器代码,因为您有代码 this.adapter.checkForActive() 并且您说“为什么适配器...返回 null...”?
-
我刚刚注意到您发布的代码根本没有显示 FragmentPagerAdapter。我这样说是因为该类有自己的片段之间切换的方式,相关链接@developer.android.com/reference/android/support/v4/app/…。我认为引用 FragmentPagerAdapter 的代码也可能是相关的。
标签: android android-fragments android-viewpager oncreate fragmentpageradapter