Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Android中将自定义ImageButton添加到布局会导致错误_Android_Custom Component - Fatal编程技术网

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

在Android中将自定义ImageButton添加到布局会导致错误,android,custom-component,Android,Custom Component,我首先要说的是,虽然我接受了一些Java培训,但这是我第一次涉足Android开发 我所做的是创建了一个名为MapCell的自定义ImageButton,它基本上是一个ImageButton,保存了一些额外的信息,并且编译得很好 当我想在相关的活动中按程序创建一个映射单元格,并将其添加到我的表格布局中时,我的问题就出现了。我的表格布局在xml中定义,id为“mapTable”。相关位如下所示: Random randy = new Random(); MapCell n = new MapCe

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

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

当我想在相关的
活动
中按程序创建一个
映射单元格
,并将其添加到我的
表格布局
中时,我的问题就出现了。我的表格布局在xml中定义,id为“mapTable”。相关位如下所示:

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
我从中得到一个错误:
类型视图的addView(View,int,int)方法未定义

在我看来,这简直是胡说八道。我把
视图
放在那里作为绝望,因为我自己坐在
n
上犯了同样的错误,没有任何改变(显然我的
MapCell
已经是一个
视图
,因为它扩展了
ImageButton


我希望一双新的眼睛能告诉我这是怎么回事,因为我已经检查过类似的问题,但我没有发现任何类似的问题。如果您需要查看更多代码,现在让我告诉您。

方法
findViewById
返回
视图
,而
视图
类没有方法
addView
(此方法在
视图组及其子类中实现)。相反,你应该写:

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

我在一个实际具有
addView
方法的类中强制执行了
findViewById
方法的返回。

您遇到了这个问题,因为方法
findViewById(R.id.mapTable)
返回
View
对象。 在android中,您不能将一个视图添加到另一个视图


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

谢谢大家,将找到的视图转换为表格布局解决了问题!