【问题标题】:Getting error when trying to inflate a 2nd layout within fragment onCreateView尝试在片段 onCreateView 中膨胀第二个布局时出错
【发布时间】:2016-03-20 20:11:09
【问题描述】:

我正在尝试在我的 onCreateView 中放大视图,但我不断收到此错误:

The specified child already has a parent. You must call removeView() on the child's parent first.

我正在尝试扩展视图并根据列表中的项目数量将视图多次添加到指定的线性布局中。我在这里做错了什么?

View v = View.inflate(getActivity(), R.layout.list_item, null);

        for(int i = 0; i < totalItems; i++) {
            TextView itemNumbers = (TextView) v.findViewById(R.id.itemNumbers);
            ImageView itemBubbles = (ImageView) v.findViewById(R.id.itemBubbles);
            itemNumbers.setText("0" + String.valueOf(i+1));
            itemBubbles.setTag(i);
            final int finalI = i;
            itemBubbles.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    setupValues(finalI);
                }
            });
            theListItems.addView(v, i);
        }

【问题讨论】:

    标签: android view layout-inflater


    【解决方案1】:

    你的通货膨胀需要在循环中。您将其充气一次,然后尝试多次添加。第二次它已经被添加,所以它失败了。每个项目都需要单独充气。

    【讨论】:

    • 谢谢,我不知道你也必须循环充气,以为它可以重复使用自己。
    • 不。膨胀创建视图的一个实例。如果这没有引发异常,那么您每次都会发现 1 个对象被覆盖。
    • 你能在addView之前试试这个吗:((ViewGroup) v.getParent()).removeView(v);
    • 将充气机添加到循环中解决了 ARP 问题,但感谢
    • @ARP 这无济于事。他想将所有 N 个项目的视图添加到视图中。这样做只会添加最后一个。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-22
    • 1970-01-01
    • 1970-01-01
    • 2011-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多