Java Viewpager";“视图组”;更改背景色运行时

Java Viewpager";“视图组”;更改背景色运行时,java,android,android-viewgroup,Java,Android,Android Viewgroup,我有一个简单的带有几个视图的viewpager。 我在每个视图中都有一个按钮,单击该按钮后应将视图的背景颜色更改为预先确定的颜色 在我的实例化项目中,我有以下内容: public CustomPagerAdapter(Context context) { mContext = context; } @Override public Object instantiateItem(ViewGroup collection, int position) { LayoutInflate

我有一个简单的带有几个视图的viewpager。 我在每个视图中都有一个按钮,单击该按钮后应将视图的背景颜色更改为预先确定的颜色

在我的实例化项目中,我有以下内容:

public CustomPagerAdapter(Context context) {
    mContext = context;
}

@Override
public Object instantiateItem(ViewGroup collection, int position) {
    LayoutInflater inflater = LayoutInflater.from(mContext);
    ViewGroup layout = (ViewGroup) inflater.inflate(R.layout.child_item, collection, false);

    PopulateView(position);
    collection.addView(layout);
    return layout;
}
我有另一个函数(populateView),负责绘制视图和创建按钮

我想保留“ViewGroup layout”的一个实例作为类变量并使用它,但是单击视图1中的按钮会导致随机视图(比如视图2)的背景颜色发生变化

所以我保存了一份“ViewGroup collection”并使用

collection.getChildAt(position).setBackgroundColor(mContext.getResources().getColor(sky));
但应用程序将在最后一次视图颜色更改时崩溃,并出现错误 java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“void android.view.view.setBackgroundColor(int)”

collection = {ViewPage@4834} "android.support.v4.view.ViewPager{e1f06a0 VFED..... ......ID 0,0-1080,1536 #7f0d0091 app:id/viewpager}"
mContext = {MainActivity@4835}
position = 2
最奇怪的是,当我查看“集合”内部,并展开“儿童”时,只列出了2个儿童。应该有3个。我不明白这是为什么


有人能帮我吗?

您需要给出添加孩子的位置

@Override
public Object instantiateItem(ViewGroup collection, int position) {

    .....


    collection.addView(layout, 0);
    return layout;
}