【问题标题】:removeView() on the child's parent孩子的父母上的 removeView()
【发布时间】:2013-04-15 09:50:37
【问题描述】:

我来了

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

我不明白父视图可能是什么,我应该从哪里删除它?

【问题讨论】:

  • 你的 R.id.edit_message 存在哪里?
  • 在设置为activity的contentView的linearlayout中。
  • 如果你设置为 contentView 那还需要重新添加到布局中吗?

标签: android android-layout layout user-interface


【解决方案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】:

    如果您多次调用 getFieldControl(field) 方法,您将尝试从 XML 中获取 R.id.edit_message 的 EditText 并将其多次添加到布局中。因此它给出了这个错误。确保只将此 EditText 添加到任何布局中一次。

    【讨论】:

    • 有没有办法解决这个问题?我真的需要从 xml 中的同一个模板创建几个 EditText。
    • 然后,您必须动态创建一个新的编辑文本并将其添加到您的布局中。不要从 XML 文件中获取它们。否则,请仅使用该编辑文本创建一个单独的布局,并在运行时对其进行扩充。
    【解决方案3】:

    您的EditText R.id.edit_message 必须在.xml 文件中,或者说layout,即layoutEditText 的父级。

    改为创建动态EditText

    【讨论】:

      猜你喜欢
      • 2011-09-25
      • 1970-01-01
      • 1970-01-01
      • 2013-10-18
      • 2015-09-06
      • 2020-02-16
      • 2014-06-02
      相关资源
      最近更新 更多