调用另一个类的扩展内部类?

时间:2016-01-20 19:16:58

标签: java android oop

为了实现Android版的表盘,我正在使用CanvasWatchFaceService。这使用Engine在画布上进行更改。示例代码如下所示:

public class WatchFace extends CanvasWatchFaceService {

    @Override
    public MyEngine onCreateEngine() {
        return new MyEngine();
    }

    private class MyEngine extends CanvasWatchFaceService.Engine { ... }
    // The above line is basically:
    // private class MyEngine extends WatchFace.Engine { ... }
}

假设我想要多个只使用一个CanvasWatchFaceService的{​​{1}}个类。这是因为Engine中的代码可以重用于我的目的。

这怎么可能?我似乎无法自己取出Engine,因为MyEngine类型的封闭实例必须在范围内。出于同样的原因,也不能使它静止。

解决此问题的最佳方法是什么?

----------------------------更新:----------------- ---------- 这是我到目前为止所做的,但没有给我一个语法错误:

CanvasWatchFaceService

,并为 public class WatchFace2 extends CanvasWatchFaceService { @Override public WatchFace.MyEngine onCreateEngine() { return new WatchFace(WatchFace2.this).onCreateEngine(); } } 添加了一个构造函数,该构造函数接收给定的WatchFace作为上下文,这是CanvasWatchFaceService内部工作所必需的。

运行正常,但MyEngine存在语义错误。错误不会在我的代码的任何行显示中断。

1 个答案:

答案 0 :(得分:0)

public class WatchFace extends CanvasWatchFaceService {

    @Override
    public MyEngine onCreateEngine() {
        return new MyEngine();
    }

    private class MyEngine extends CanvasWatchFaceService.Engine { ... }
    // The above line is basically:
    // private class MyEngine extends WatchFace.Engine { ... }
}

然后扩展WatchFace

public class WatchFace1 extends WatchFace{ 
}

public class WatchFace2 extends WatchFace{
}