我正在尝试从我的代码在TableLayout中插入行。 我在Internet和stackOverflow上获得了一些教程,以及每次我如何获得此异常的一些教程。

12-12 17:54:07.027: E/AndroidRuntime(1295): Caused by: java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.

12-12 17:54:07.027: E/AndroidRuntime(1295):     at com.kaushik.TestActivity.onCreate(TestActivity.java:41)

这是活动类:

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        /* Find Tablelayout defined in main.xml */
        TableLayout tl = (TableLayout) findViewById(R.id.myTableLayout);
        /* Create a new row to be added. */
        TableRow tr = new TableRow(this);
        tr.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
                LayoutParams.WRAP_CONTENT));
        /* Create a Button to be the row-content. */
        Button b = new Button(this);
        b.setText("Dynamic Button");
        b.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
                LayoutParams.WRAP_CONTENT));
        /* Add Button to row. */
        tr.addView(b);
        /* Add row to TableLayout. */
        tl.addView(tr, new TableLayout.LayoutParams(LayoutParams.FILL_PARENT,
                LayoutParams.WRAP_CONTENT));

        /* adding another row */
        TableRow tr2 = new TableRow(this);
        tr2.addView(b); // Exception is here
        tl.addView(tr2, new TableLayout.LayoutParams(LayoutParams.FILL_PARENT,
                LayoutParams.WRAP_CONTENT));
    }

这是XML

<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:id="@+id/myTableLayout"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   >
</TableLayout>

请帮我。

===============>>#1 票数:0 已采纳

你做错了

 /* adding another row */
 TableRow tr2 = new TableRow(this);
 tr2.addView(b); // Exception is here

B是按钮,因为它已经添加到表的第一行“ t1”中。 由于按钮是一个视图,每个视图只能由一个父视图保存。 按钮b已显示在第一行。 它可以再次显示在row2上。

因为当用户单击按钮或row1row2时如何逻辑并不合理,那么如何知道按下了哪个按钮呢? 我的意思是您不知道它是被行1还是行2所按下。

onClick(View view){
   if(view == b){
       // So you cant do that this is button row1 button or row2 button.
   }

   // Or you can check the pressed button by id which will also be same. 

}

因此,您应该创建新的Button button2,然后将其添加到row2。

  ask by KD. translate from so

未解决问题?本站智能推荐:

2回复

通过findViewById在TableLayout中获取一组TableRow

具有LinearLayout,其中某些部分在某些情况下可能不可见。 例如 在LinearLayout中,我可以通过findViewById从主布局中获取任何子部件(及其布局),并更改其可见性(当然是通过编程方式)。 带有ID的版式对子集的使用类似于包装器。 我可以在TableL
1回复

在TableLayout内的TableRow中添加左右边距时隐藏了EditText字符

在下面的布局中,如果我在editText字段上写文本,那么某些字符将被隐藏! 可能是什么原因? 或可能的解决方案是什么? 提前致谢。
1回复

动态更改TableLayout中TableRow的内容

是否可以在TableLayout中动态更改TableRow的内容? 目前,我有一个简单的表布局,如下所示: 我想做的是用另一个视图(在我的情况下是EditView)动态地更改第二列的TextView。 这样做的原因是,我希望表首先以只读模式显示数据,然后切换到可编辑状态,例如在用
1回复

如何在android中的tablelayout中为tablerow提供边框?

我需要在TableLayout显示TableRow周围的边框。 我该怎么办?
2回复

删除TableLayout中TableRow之间的任意间隙

我正在使用TableLayout打印九张图片。 由于某些原因,如下图所示,行之间的差距越来越大。 我将背景设置为绿色,以便容易看到间隙。 我的TableLayout是通过编程创建的。 我该如何解决此问题,以使行之间的间距不会太大? 我已经尝试过tableRowParams.setM
1回复

在TableLayout中动态添加TableRow的问题

我的代码: 我希望它每次单击添加 Button都添加一个新行。 我的xml是以下内容: 每次我单击Button ,它什么都不做。 有人可以帮我吗?
1回复

使用TableLayout和TableRow的间距问题

我在XML文件中有以下设置: 结果看起来像 似乎无论我怎样尝试,我都无法在三个TextView之间获得均匀的间距,第一个始终占据了大部分空间。 我正在尝试将所有3个水平均匀地隔开。 谢谢你的帮助。
1回复

单击TableLayout中的项目时如何从TableLayout中获取元素编号

单击“表格布局”中的项目时,如何从“表格布局”中获取元素编号?
1回复

Android:当文本更新时TableRow中的数字移位

我有一个带有几个TableRows的TableLayout。 在每一行中,我都有两个TextView:第一个显示一些描述性文本,第二个显示一个数字。 例如: 我有相等权重的TextView,行本身和每个TextView重力都居中,但是,在执行应用程序期间更改文本时,元素会移动并且不再
2回复

TableRow之间的android TableLayout Horizo​​ntall线

我有一个TableLayout并以编程方式创建了一些TableRow。我有一些json,然后将其解析为TableRow中的一个显示。 现在我想在TableRow之间添加Horizo​​ntall线。我搜索并找到了一些示例,但我无法添加它,这是我的来源 这是我的java代码 我是