我正在尝试添加相同布局的多个视图。但是,在执行以下代码时,我收到异常:java.lang.IllegalStateException:指定的子代已经有父代。您必须首先在孩子的父母身上调用removeView()。
我做错了什么?谢谢!
class GetTrackTimer extends TimerTask {
Activity act;
View RootView;
public GetTrackTimer(Activity ctx, View RootView)
{
this.act = ctx;
this.RootView = RootView;
}
@Override
public void run() {
act.runOnUiThread(new Runnable() {
@Override
public void run() {
if (TrackItems.getInstance().items == null)
return;
LinearLayout items = (LinearLayout) RootView.findViewById(R.id.itemslist);
LayoutInflater inflater = (LayoutInflater) act.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
for (int i = 0; i < TrackItems.getInstance().items.length; i++)
{
View itemView = inflater.inflate(R.layout.track_item,null);
TextView tv= (TextView)itemView.findViewById(R.id.itemName);
tv.setText(TrackItems.getInstance().items[i].Item.ID + "");
items.addView(tv);
}
}
});
}
}
答案 0 :(得分:2)
您的TextView电视已经是夸大的itemView的子节点,因此您无法将其作为子节点添加到另一个视图中。
尝试使用items.addView(itemView);
代替items.addView(tv);
答案 1 :(得分:1)
那是因为单个子元素不能有多个父布局..
在这里,items.addView(tv);
多次添加tv
,因此出现错误..