将自定义ImageButton添加到Android中的布局会导致错误

时间:2012-07-23 15:35:42

标签: android custom-component

我首先要说的是,虽然我接受了一些Java培训,但这是我第一次涉足Android的开发。

我所做的是创建一个名为ImageButton的自定义MapCell,它基本上是ImageButton,其中包含一些额外的信息,并且编译得很好。

当我想在相关的MapCell中以程序方式创建Activity并将其添加到我在{x}中定义且{id为'mapTable'的TableLayout时,我的问题就出现了。相关位看起来像这样:

Random randy = new Random();

MapCell n = new MapCell(randy.nextInt(4), this); //the random number is part of my extra info

findViewById(R.id.mapTable).addView((View)n, 20, 20); //add cell to display

我从中得到一个错误: The method addView(View, int, int) is undefined for the type View

对我来说听起来完全是胡说八道。我把那个View投射在那里作为绝望,我得到同样的错误n坐在一起并没有改变(显然我的MapCell已经是View,因为它延伸ImageButton)。

我希望一双新眼睛可以告诉我这是什么意思,因为我已经检查了类似的问题而且我没有发现任何类似的问题。现在,如果您需要查看更多代码,请立即使用。

2 个答案:

答案 0 :(得分:0)

方法findViewById返回ViewView类没有方法addView(此方法在ViewGroup及其实现子类)。相反,你应该写:

((TableLayout)findViewById(R.id.mapTable)).addView(n, 20, 20);

我在实际拥有findViewById方法的类中转换了addView方法。

答案 1 :(得分:0)

您遇到此问题,因为方法findViewById(R.id.mapTable)会返回View个对象。 在Android中,您无法将一个视图添加到另一个视图。

您可以将addView功能与ViewGroup以及所有LinearLayout(等)对象一起使用。

相关问题