有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Viewpager“ViewGroup”更改背景色运行时

我有一个简单的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));

但应用程序会在最后一次视图颜色更改时崩溃,并出现错误 JAVAlang.NullPointerException:尝试调用虚拟方法“void”。看法看法空对象引用上的setBackgroundColor(int)'

collection = {ViewPage@4834} "安卓.support.v4.view.ViewPager{e1f06a0 VFED..... ......ID 0,0-1080,1536 #7f0d0091 app:id/viewpager}"
mContext = {MainActivity@4835}
position = 2

最奇怪的是,当我查看“收藏”内部,并展开“儿童”时,只列出了两个儿童。应该有三个。我不明白这是为什么

谁能帮帮我吗


共 (1) 个答案

  1. # 1 楼答案

    你需要给出添加孩子的位置See here

    @Override
    public Object instantiateItem(ViewGroup collection, int position) {
    
        .....
    
    
        collection.addView(layout, 0);
        return layout;
    }