簡體   English   中英

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

[英]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 ,該layoutEditText的父級。

改為創建動態EditText

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM