[英]removeView() on the child's parent
我越來越
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;
}
我不明白父母的觀點是什么,我應該從哪里刪除它?
如果多次調用getFieldControl(field)方法,則嘗試從XML獲取R.id.edit_message的EditText並將其多次添加到布局中。 因此它給出了這個錯誤。 確保只將此EditText添加一次到任何布局。
以編程方式創建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);
修改下面的代碼linearLayout.addView(view);
因為已經通過XML在布局中添加了EditText
。
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
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.