从类构造函数创建一个按钮

时间:2016-01-28 23:10:55

标签: java android

我想以编程方式从新的类构造函数创建一个按钮。它不是主要的类。

class myChips
{
    ImageView slika;
    RelativeLayout rl;
    myChips(View v)
    {
        rl = (RelativeLayout) v.getParent();
        slika = (ImageView) findViewById(R.id.img_25);
        slika.setLayoutParams(new RelativeLayout.LayoutParams(dpToPx, dpToPx));

        rl.addView(slika);

    }
}

当我从onClick方法

初始化新对象时
 public void placeChip(View v)
{
   myChips test = new myChips(v);

}

我在线上遇到了崩溃和错误

rl.addView(slika);

"指定的子级已有父级。您必须先在孩子的父母身上调用removeView()。"

我尝试了一些尝试,但仍然可以摆脱它。

1 个答案:

答案 0 :(得分:0)

如果你看findViewById() mehtod:

  

查找具有给定ID的子视图。如果这个观点有给定的   id,返回此视图。

这意味着您的 slika rl.addView(slika);已经拥有父级,因此您可以为其添加另一个父级。

这就是为什么当你执行java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first 时,它会抛出 IllegalStateException

myChips(View v, Context context)
{
    rl = (RelativeLayout) v.getParent();
    slika = new ImageView(context);
    slika.setLayoutParams(new RelativeLayout.LayoutParams(dpToPx, dpToPx));

    rl.addView(slika);

}

请改为尝试:

public void placeChip(View v)
{
   myChips test = new myChips(v, YourActivity.this);

}

在你的活动中:

tables.getTable