您好我想在swipe上更新viewpager片段的视图(类似于setOffscreenPageLimit = 0,因为最小偏移量为1,它不起作用)但我不知道如何。我尝试使用接口,但是我在视图的部分区域获得了nullpointer异常,我试图设置它的可见性:
pager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int position) {
((OnRefreshListener) adapter.getItem(position)).onRefresh();
}
@Override
public void onPageScrollStateChanged(int arg0) {}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {}
});
已实施接口:
@Override
public void onRefresh() {
if(AddLesson.addNext) {
addDetails.setVisibility(View.GONE);
addLesson.setVisibility(View.GONE);
addWithData.setVisibility(View.VISIBLE);
addWithoutData.setVisibility(View.VISIBLE);
}
}
FragmentStatePagerAdapter:
class TabsAdapter extends FragmentStatePagerAdapter {
public TabsAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
AddLessonDetails addDetails = AddLessonDetails.newInstance(CONTENT[position]);
return addDetails;
}
@Override
public CharSequence getPageTitle(int position) {
return CONTENT[position % CONTENT.length];
}
@Override
public int getCount() {
return CONTENT.length;
}
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
}
我该怎么做才能解决这个问题?
答案 0 :(得分:1)
你在你的适配器上调用getItem,它返回(我假设)一个全新的片段。
因为您正在返回一个未初始化的片段,然后立即调用其OnRefresh
方法,该方法试图操纵尚未创建的视图,您将获得一个NPE。
在调用AF OnCreateView
之前,请勿尝试访问片段中的视图。
答案 1 :(得分:0)
这将影响视图寻呼机中从一个页面到另一个页面的更改。
OnPageChangeListener pagechangelistener = new OnPageChangeListener(){
@Override
public void onPageSelected(int arg0) {
Logger.logMessage("Called first");
pageAdapter.notifyDataSetChanged();
indicator.setCurrentItem(arg0);
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
Logger.logMessage("Called second");
}
@Override
public void onPageScrollStateChanged(int arg0) {
Logger.logMessage("Called third");
}
};
myViewPager.setOnPageChangeListener(pagechangelistener);
在页面适配器中使用它。
@覆盖 public int getItemPosition(Object object){
return POSITION_NONE;
}