Jas*_*per 6 android oncreate android-fragments android-viewpager fragmentpageradapter
我使用FragmentPagerAdapter从片段切换.我需要在制作片段开关时调用一些函数,并且在OnPause和OnResume上遇到一些麻烦,所以这个问题的建议我实现了一个接口OnPageSelectListener:
public interface OnPageSelectListener {
void onPageSelected();
void onPageNotVisible();
}
Run Code Online (Sandbox Code Playgroud)
只要此页面到达前台,它就会调用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 ");
}
}
Run Code Online (Sandbox Code Playgroud)
现在是我的问题:当我返回到我的片段时,为什么适配器(或片段中的任何其他对象)返回null?当fragmentPager初始化时,片段的onActivityCreate函数被调用一次,但之后不再调用,并且适配器返回null ....
这就是为什么我认为你的CheckListAdapter(我称之为listAdapter)是空的:
pagerAdapter给ViewPagerViewPager的pagerAdapterFragmentViewPager告诉他们使用FragmentManager它onPageSelected被叫到listAdapter. 此时它尚未初始化。(NPE)FragmentManagerFragment 完成其所有阶段。onCreateView被叫。你的listAdapter已创建。不要尝试使用其外部片段的内部数据。它应该作为一个独立的单元工作,如果你以不同的方式使用它,它不会很好。由于片段是在稍后阶段初始化的,因此您无法按预期使用它。
您可以尝试在片段中而不是在 中执行您想要执行的操作,pagerAdapter或者在托管中编写一个方法Activity,并在准备好时从片段中调用它,甚至启动一个事件。
| 归档时间: |
|
| 查看次数: |
1839 次 |
| 最近记录: |