我试图添加相同布局的多个视图。然而,当做下面的代码,我得到异常: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);
}
}
});
}
}
你的textviewtv已经是膨胀的itemView的子视图,所以你不能把它作为子视图添加到另一个视图
用items.addView(itemView);
代替items.addView(tv);
这是因为你不能为一个子元素设置多个父元素。
在这里,items.addView(tv);
你的tv
被添加了多次,因此错误…