【问题标题】:Android: Adding another table row programmaticallyAndroid:以编程方式添加另一个表格行
【发布时间】:2023-03-25 01:35:02
【问题描述】:

我有一个 TableLayout,里面有一个 Table Row。我正在尝试使用下面的函数添加另一个 TableRow,其值与已经存在的表行相同:

tableRowOne = findViewById(R.id.tableRowOne);
editTextOne = findViewById(R.id.editTextOne);

public void AddTableRowFunction() {        

    TableRow tableRowNew = new TableRow(this);
    tableRowNew = tableRowOne;

    EditText editTextNew = new EditText(this);

    editTextNew = editTextPlayer1;

    tableRowNew.addView(editTextNew);

    table.addView(tableRowNew, 0 ,new TableLayout.LayoutParams(TableLayout.LayoutParams.MATCH_PARENT, TableLayout.LayoutParams.MATCH_PARENT));

}

但是当我调用函数告诉我“指定的孩子已经有一个父母。你必须先在孩子的父母上调用 removeView()”时,应用程序崩溃了。

【问题讨论】:

  • 检查是否已经添加了视图

标签: java android tablelayout


【解决方案1】:

View 被添加到ViewGroup 时,它包含对父级的引用。当您每次向表中添加相同的视图时,就会发生此问题。正因为如此:

tableRowNew = tableRowOne;

尝试删除以上行,因为每次您尝试添加tableRowNew 时,您都尝试添加之前添加到table 的视图。

【讨论】:

  • 复制 EditText 时也会发生同样的情况。 editTextPlayer1 位于已显示的表格行上。我可以复制有关它的详细信息而不会出现此问题吗?
  • 我认为您应该在 xml 布局中设计您的视图。然后使用 LayoutInflater 创建它的一个实例。通过添加这个视图,问题就不会发生了。
猜你喜欢
  • 2016-05-24
  • 1970-01-01
  • 2015-02-08
  • 2023-03-15
  • 1970-01-01
  • 1970-01-01
  • 2020-06-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多