1

我怎样才能添加更多相同的布局而不是一个

View v = (LinearLayout) inflater.inflate(R.layout.tab_frag2_layout,container, false);
     RelativeLayout tv = (RelativeLayout) inflater.inflate(R.layout.post_layout,container,false);
     RelativeLayout tv2 = (RelativeLayout) inflater.inflate(R.layout.post_layout,container,false);

    ((LinearLayout) v).addView(tv);
    ((LinearLayout) v).addView(tv);
    ((LinearLayout) v).addView(tv);
    ((LinearLayout) v).addView(tv);
    ((LinearLayout) v).addView(tv);

如果我这样做它会给我错误然后如果我这样做它只会显示一次

View v = (LinearLayout) inflater.inflate(R.layout.tab_frag2_layout,container, false);
     RelativeLayout tv = (RelativeLayout) inflater.inflate(R.layout.post_layout,container,false);
     RelativeLayout tv2 = (RelativeLayout) inflater.inflate(R.layout.post_layout,container,false);

    ((LinearLayout) v).addView(tv);
    ((LinearLayout) v).addView(tv2);

怎么办请帮忙

4

1 回答 1

2

首先,演员阵容没有意义:

View v = (LinearLayout) inflater.inflate(R.layout.tab_frag2_layout, container, false);

删除演员表,或将类型更改vLinearLayout

如果您向您的日志猫提供错误消息会更好,但我想您已经到达ClassCastException这里:

((LinearLayout) v).addView(tv);

也许你v不是LinearLayout?如果你不确定,试试这个:

((ViewGroup) v).addView(tv);

编辑

当您膨胀布局时,View会创建实例。一个人View不能有超过 1 个父母,所以当你这样做时:

.addView(tv);
.addView(tv);

操作系统认为您正在尝试添加另一个父级tv(被禁止,因此会引发异常)

于 2012-08-29T11:52:09.667 回答