gpt4 book ai didi

java - removeAllViews() 不删除 TableLayout 中的 TableRow 子级

转载 作者:行者123 更新时间:2023-11-29 06:01:01 26 4
gpt4 key购买 nike

一些背景:我在构建“编辑数据库” View 然后再次删除行的程序部分遇到问题。每次显示“编辑数据库” View 时显示的字段都不同。编辑数据库 View 是一个表格布局,数据库中的每一行都是表格布局中的一行。当用户退出编辑 View 时,该 View 应该在下次处理或删除行。

我的问题是,无论我尝试什么,我都无法删除表格布局中的行。以下是相关的代码 fragment :

获取xml文件中tablelayout的句柄

setContentView(R.layout.database_entry);
TableLayout editorLayout = (TableLayout)findViewById(R.id.DatabaseLayout);

布局被传递给另一个类,它们被添加到布局中,如下所示:

//layout is the tablelayout from earler, passed into this function
TableRow row = new TableRow(contex);
row .setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
//stuff added to the row....
//...
//...
layout.addView(row);

当我尝试删除 Tablelayout 时,我运行这段代码

TableLayout editorLayout = (TableLayout)findViewById(R.id.DatabaseLayout);
editorLayout.removeAllViews();

无论我做什么,下次我点击按钮编辑代码时,它都会显示之前的行以及添加的新行。它们不会从表中删除。我没有收到任何错误消息或任何有用的调试信息,它只是无法正常工作。

我为此纠结了一段时间。尝试动态创建表格布局(无 xml 文件),尝试使用其索引删除每一行(或仅一行)。我已经使用层次结构查看器来检查以确保所有内容都是该表格布局的子项(它是)。如果有人有任何见解,将不胜感激。

最佳答案

我能够弄清楚这个问题。首先,上面的注释有点错误,mChildren 数组不包含任何指向我删除的 View 的指针。他们被淘汰了,就像他们应该的那样。

我的行没有被删除的原因是因为在我调用 removeAllViews() 之后我切换了内容 View setContentView(R.layout.main);。当我注释掉这一行时,删除子代码按预期工作。我假设一些 android 后端优化代码决定 removeAllViews() 不需要在内存中的某处运行或更新。并且在此函数内所做的所有更改均不适用。

我将把所有这些代码放在一个新的 Activity 中(它在开始时真正属于的地方)。但我想提供一个解释,以防其他人遇到同样的问题。

关于java - removeAllViews() 不删除 TableLayout 中的 TableRow 子级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10077352/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com