问题描述
我有ViewPager。每个ViewPager的页面都是customView。在addOnPageChangeListener(new ViewPager.OnPageChangeListener()
方法的自定义视图类中,我得到了null。我不明白为什么,因为在其他使用viewPager-setOnClickListener(new OnClickListener()
的方法中,没有null。此方法有效。
我的自定义视图:
public class CustomView extends LinearLayout {
private LayoutInflater mInflater;
private Button button;
private ViewPager viewPager;
public void setPager(ViewPager viewPager) {
this.viewPager = viewPager;
}
public CustomView(@NonNull Context context) {
super(context);
}
public CustomView(@NonNull Context context,@Nullable AttributeSet attrs) {
super(context,attrs);
mInflater = LayoutInflater.from(context);
View v = mInflater.inflate(R.layout.custom_view,this,true);
button = v.findViewById(R.id.nextButton);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
viewPager.setCurrentItem(viewPager.getCurrentItem() + 1,true);
}
});
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position,float positionOffset,int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
和活动类别:
public class Activity extends AppCompatActivity {
private ViewPager viewPager;
private CustomPagerAdapter customPagerAdapter;
private CustomView customView;
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
customPagerAdapter = new CustomPagerAdapter(this);
viewPager = findViewById(R.id.viewPager);
customView = findViewById(R.id.customView);
viewPager.setAdapter(customPagerAdapter);
customView.setPager(viewPager);
}
}
我收到错误消息:
E/AndroidRuntime: Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void androidx.viewpager.widget.ViewPager.addOnPageChangeListener(androidx.viewpager.widget.ViewPager$OnPageChangeListener)' on a null object reference
at CustomView.<init>(line : viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener())
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)