所以我一直在努力解决这个问题。我是一个相当新的 android 开发人员,所以对我来说理解一些概念仍然非常困难。
在我的布局中,我使用 PagerAdapter 在页面之间水平滑动。我想在登陆布局中有一个按钮,当点击时,滚动到相邻的布局。
现在我的问题是,一旦我点击那个按钮,我就会得到一个 NPE。所以我看到了问题,但不知道如何编写它以使其真正做到它应该做的事情。
这是我的代码。
public class CustomPageAdapter extends PagerAdapter {
ViewPager mPager;
public Object instantiateItem(View collection, int position) {
LayoutInflater inflater = (LayoutInflater) collection.getContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
int resId = 0;
switch (position) {
case 0: {
resId = R.layout.field01;
break;
}
case 1: {
resId = R.layout.add_site;
break;
}
case 2: {
resId = R.layout.main;
break;
}
}
View view = inflater.inflate(resId, null);
if (position == 1) {
Button addSiteButton = (Button) view.findViewById(R.id.addSiteButton);
addSiteButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
mPager.setCurrentItem(2); //NPE happens here.
}
});
}
((ViewPager) collection).addView(view, 0);
return view;
}
@Override
public void destroyItem(View arg0, int arg1, Object arg2) {
((ViewPager) arg0).removeView((View) arg2);
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == ((View) arg1);
}
@Override
public Parcelable saveState() {
return null;
}
@Override
public int getCount() {
return 3;
}
}
提前致谢!