Android PagerAdapter内部的onClickListener
所以我已经为此挣扎了一段时间。我是一个相当新的android开发者,所以理解一些概念对我来说仍然非常困难 在我的布局中,我使用PagerAdapter在页面之间水平滑动。我想在着陆布局中有一个按钮,单击后滚动到相邻布局 现在我的问题是,一旦我点击那个按钮,我就会得到一个NPE。所以我看到了问题,但不知道如何编写它,使它真正做到它应该做的 这是我的密码Android PagerAdapter内部的onClickListener,android,android-layout,android-viewpager,android-button,android-pageradapter,Android,Android Layout,Android Viewpager,Android Button,Android Pageradapter,所以我已经为此挣扎了一段时间。我是一个相当新的android开发者,所以理解一些概念对我来说仍然非常困难 在我的布局中,我使用PagerAdapter在页面之间水平滑动。我想在着陆布局中有一个按钮,单击后滚动到相邻布局 现在我的问题是,一旦我点击那个按钮,我就会得到一个NPE。所以我看到了问题,但不知道如何编写它,使它真正做到它应该做的 这是我的密码 public class CustomPageAdapter extends PagerAdapter { ViewPager mPager;
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;
}
}
提前谢谢 出现NPE是因为您试图访问mPager,它只是一个引用,不指向任何东西,由以下行创建:ViewPager mPager 您需要从mPager参考中的布局检索viewPager,如下所示:
ViewPager mPager=(ViewPager)findViewById(R.id.pager) 出现NPE是因为您试图访问mPager,它只是一个引用,不指向任何东西,由以下行创建:ViewPager mPager 您需要从mPager参考中的布局检索viewPager,如下所示:
ViewPager mPager=(ViewPager)findViewById(R.id.pager) 您应该将片段与viewpager一起使用,在片段中您可以在按钮上定义onClickListener您应该将片段与viewpager一起使用,在片段内部,您可以在按钮上定义onClick Listener。您可以将其添加到onClick内部?您可以将其添加到当前已声明mPager的位置。您可以将其添加到onClick内部?您可以将其添加到当前已声明mPager的位置。