给我的android项目的以下课程:
Preview extends SurfaceView implements SurfaceHolder.Callback
和
A extends Doc
我真的不知道怎么问,我知道这不是很好,但是我想要预览,我称之为Doc的抽象方法。在这个Doc方法中,我必须调用前一个预览对象的方法。
这是一个例子:
来自Preview.java:
Doc _doc = new A();
private void myMethod() {
this._doc.process(this)
}
来自A.java:
@Override
public void process(Preview p) {
p.processA();
}
问题是我收到了错误:
Doc类型中的方法流程(预览)不适用于参数(new Camera.PreviewCallback(){})
然而,由于我想从预览中调用该方法,我无法改变这一判断。我尝试了很多东西,比如施放等等。它们都不起作用。
感谢您的帮助!
PS:我在Windows下使用Eclipse。
答案 0 :(得分:8)
假设您正在从匿名内部类(我假设的Camera.PreviewCallback类型,因此错误消息)中调用A.process(this)
,您必须编写A.process(Preview.this)
,因为它是独立的this
指的是内部类而不是预览实例。
答案 1 :(得分:2)
Doc类型中的方法流程(预览)不适用于参数(new Camera.PreviewCallback(){})
它只是意味着您传递的是Camera.PreviewCallback
的对象,但在您的方法中public void process(Preview p)
您想要一个Preview
的对象。
如果您已在anonymous class旁边编写此代码,则this
不会指向Preview
类。它将指向内部匿名类的对象。
因此你需要写A.process(Preview.this)