我正在
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);
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;
}
我不明白父母的观点是什么,我应该从哪里删除?
答案 0 :(得分:1)
如果多次调用getFieldControl(field)方法,则尝试从XML获取R.id.edit_message的EditText并将其多次添加到布局中。因此它给出了这个错误。确保只将此EditText添加一次到任何布局。
答案 1 :(得分:1)
以编程方式创建EditText,如下所示
private android.widget.EditText getFieldControl(ControlTemplate control)
{
EditText edittext = new EditText(this);
edittext.setHint(control.getName());
edittext.setText(control.getValue());
return edittext;
}
注意:如果EditText
是XML格式的,设置为内容视图,请删除第linearLayout.addView(view);
行修改代码,因为已经EditText
通过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());
}
答案 2 :(得分:0)
您的EditText
R.id.edit_message
必须位于.xml
个文件中或说layout
,layout
是EditText
的父级。< / p>
改为创建动态EditText
。