Java 无法从活动或类调用自定义视图(canvasview)的方法

Java 无法从活动或类调用自定义视图(canvasview)的方法,java,android,Java,Android,我无法从设置包含视图的布局的活动中调用自定义视图canvasview的方法。我甚至不能打电话给canvasview活动的负责人 此外,我将视图传递给一个不扩展活动的自定义类,并且我不能从自定义类调用canvasview的方法 我不确定我做错了什么 GameActivity.java: game_layout.xml: 我对这个很困惑: 我还有另一个类,它不扩展构造函数中接收到canvasview引用的活动,也无法解析它: 谢谢,对不起,如果问题太明显了,我将从Java开始,这些东西让我很困惑 编

我无法从设置包含视图的布局的活动中调用自定义视图canvasview的方法。我甚至不能打电话给canvasview活动的负责人

此外,我将视图传递给一个不扩展活动的自定义类,并且我不能从自定义类调用canvasview的方法

我不确定我做错了什么

GameActivity.java:

game_layout.xml:

我对这个很困惑:

我还有另一个类,它不扩展构造函数中接收到canvasview引用的活动,也无法解析它:

谢谢,对不起,如果问题太明显了,我将从Java开始,这些东西让我很困惑

编辑:

在凌晨3:00睡觉的时候,仔细想想,我注意到Eclipse将该行标记为错误,因为View对象实际上没有get\u canvaswidth方法。只有子CanvasView方法具有它。因此,我的问题可以通过向上投射解决:

我的意思是,我收到一个视图作为参数,但现在它实际上是一个视图子对象,我应该能够使用upcast调用子对象的方法。现在eclipse不会生成错误,但w和h总是报告0:-。我还测试了不使用回答中建议的向上转换,以及在调用中发送和接收CanvasView对象,并且两个都得到0:

private View canvasview;
无论canvasview中存储了什么,您都只能调用由变量类型定义的方法。你需要换一行

private CanvasView canvasview;
无论canvasview中存储了什么,您都只能调用由变量类型定义的方法。你需要换一行

private CanvasView canvasview;

你好谢谢你的回答。是的,您是对的,但有时您无法更改接收到的视图参数。今晚,大约凌晨3点,当我在x'D床上时,我注意到我的问题可以通过向上投射来解决:int w=CanvasView CanvasView.get_canvaswidth;我的意思是,我收到一个视图作为参数,但现在它实际上是一个视图子对象,我应该能够使用upcast调用子对象的方法。现在eclipse不会生成错误,但w和h总是报告0:-。我已经测试了在调用中不使用向上转换和发送和接收CanvasView对象,并且两个都得到了0:?接受,但实际上并不需要它。。。只需向上转换就足以获得有效的引用。。。无论如何,在技术上是正确的,允许解决问题,所以。。。谢谢你好谢谢你的回答。是的,您是对的,但有时您无法更改接收到的视图参数。今晚,大约凌晨3点,当我在x'D床上时,我注意到我的问题可以通过向上投射来解决:int w=CanvasView CanvasView.get_canvaswidth;我的意思是,我收到一个视图作为参数,但现在它实际上是一个视图子对象,我应该能够使用upcast调用子对象的方法。现在eclipse不会生成错误,但w和h总是报告0:-。我已经测试了在调用中不使用向上转换和发送和接收CanvasView对象,并且两个都得到了0:?接受,但实际上并不需要它。。。只需向上转换就足以获得有效的引用。。。无论如何,在技术上是正确的,允许解决问题,所以。。。谢谢
int w = ((CanvasView) canvasview).get_canvaswidth();
private View canvasview;
private CanvasView canvasview;