在孩子的父母身上删除()

时间:2013-04-22 13:14:13

标签: android android-layout layout user-interface

我正在

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;
}

我不明白父母的观点是什么,我应该从哪里删除?

3 个答案:

答案 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个文件中或说layoutlayoutEditText的父级。< / p>

改为创建动态EditText