我想在片段中的textview中更改文本,我可以在instantiateItem中轻松完成此操作,但在instantiateItem之后,textView为null,我无法使用
调用MyPagerAdapter.textView.SetText();
private class MyPagerAdapter extends PagerAdapter {
TextView textView;
public int getCount() {
return 5;
}
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.farleft;
View view = inflater.inflate(resId, null);
((ViewPager) collection).addView(view, 0);
textView = (TextView)view.findviewById(R.id.textvvvv);
return view;
case 1:
resId = R.layout.left;
break;
case 2:
resId = R.layout.middle;
break;
case 3:
resId = R.layout.right;
break;
case 4:
resId = R.layout.farright;
break;
}
}
@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;
}
}
但是,当我使用
更改instantiateItem中的文本时,starnge就在这里textView.SetText("EEE");
效果很好,但是我无法更改MyPageAdapter以外的文字,为什么?
答案 0 :(得分:0)
MyPagerAdapter
不是static
,您的访问方法将用于静态类。尝试实例化PagerAdapter
并使用该引用调用getAdapter()
方法并尝试使用findViewById(....)
找到视图
修改强>
当您在活动中声明PagerAdapter
时,尝试从中获取适配器的引用,如下所示
PagerAdapter viewer = (PagerAdapter) findViewById(R.id.pageradapter);
- >
viewer.getAdapter().findViewById(...)
答案 1 :(得分:0)
ViewPager从View继承findViewById(),所以你不能这样做:
TextView textView = (TextView) viewPager.findViewById(...);