removeView()对儿童的父母
问题描述:
E/AndroidRuntime(855): Caused by: java.lang.IllegalStateException:
The specified child already has a parent. You must call removeView()
on the child's parent first.
我跑的代码,发生在linearLayout.addView(视图)的错误;
view = getFieldControl(field);
linearLayout.addView(view);
凡getFieldControl看起来像这样(简化):
private android.view.View getFieldControl(ControlTemplate control)
{
View view =null;
view = (EditText)findViewById(R.id.edit_message);
((EditText) view).setHint(control.getName());
((EditText) view).setText(control.getValue());
return view;
}
我不明白的意见父可能是什么,我应该在哪里从中删除?
答
创建您的EditText程序如下
private android.widget.EditText getFieldControl(ControlTemplate control)
{
EditText edittext = new EditText(this);
edittext.setHint(control.getName());
edittext.setText(control.getValue());
return edittext;
}
注:如果EditText
是在由因为已经EditText
在添加删除线linearLayout.addView(view);
如下设置为内容查看修改代码,XML通过XML进行布局。
EditText edittext = (EditText) findViewById(R.id.edit_message);;
getFieldControl(edittext, field);
private void getFieldControl(EditText edittext, ControlTemplate control)
{
edittext.setHint(control.getName());
edittext.setText(control.getValue());
}
答
你EditText
R.id.edit_message
必须在.xml
文件或说layout
,即layout
是EditText
的父。
改为创建动态EditText
。
其中您的R.id.edit_message存在吗? – 2013-04-22 13:19:40
在设置为activity的contentView的线性布局中。 – Rickard 2013-04-22 13:20:51
如果您将其设置为contentView,那么需要将它再次添加到布局中? – 2013-04-22 13:25:49