我首先要说的是,虽然我接受了一些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
)。
我希望一双新眼睛可以告诉我这是什么意思,因为我已经检查了类似的问题而且我没有发现任何类似的问题。现在,如果您需要查看更多代码,请立即使用。
答案 0 :(得分:0)
方法findViewById
返回View
,View
类没有方法addView
(此方法在ViewGroup
及其实现子类)。相反,你应该写:
((TableLayout)findViewById(R.id.mapTable)).addView(n, 20, 20);
我在实际拥有findViewById
方法的类中转换了addView
方法。
答案 1 :(得分:0)
您遇到此问题,因为方法findViewById(R.id.mapTable)
会返回View
个对象。
在Android中,您无法将一个视图添加到另一个视图。
您可以将addView
功能与ViewGroup
以及所有LinearLayout
(等)对象一起使用。