Для того, чтобы реализовать наручные часы для 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
классы, которые используют только один Engine
. Это связано с тем, что код в пределах Engine
можно использовать повторно для моей цели.
Как это возможно? Кажется, я не могу извлечь MyEngine
самостоятельно, так как экземпляр экземпляра типа CanvasWatchFaceService
должен быть в области. По той же причине также не может быть статичным.
Что было бы лучшим способом подойти к этой проблеме?
---------------------------- ОБНОВЛЕНИЕ: ---------------- ----------- Вот что я сделал до сих пор, что не дает мне ошибку синтаксиса:
public class WatchFace2 extends CanvasWatchFaceService {
@Override
public WatchFace.MyEngine onCreateEngine() {
return new WatchFace(WatchFace2.this).onCreateEngine();
}
}
, и добавил застройщик для WatchFace
, который принимает в данном CanvasWatchFaceService
в качестве контекста , необходимый для внутренней работы MyEngine
.
Это нормально, но есть семантические ошибки относительно getPackageName()
. Ошибка не показывает перерыв в любой строке моего кода.
Я думаю, что я имею в виду, если у меня есть еще один 'открытого класса WatchFace2 простирается CanvasWatchFaceService', я хочу, чтобы вернуть экземпляр выше' MyEngine' от его ' onCreateEngine() 'тоже. – NeilDA
Я пробовал это: назвал новый WatchFace (Watchface2.this) .onCreateMethod() из другого класса Watchface2. Я получаю ошибки из класса MyEngine относительно получения имени пакета. Пробовал отправить экземпляр WathFace2 в качестве конструктора, но не повезло. – NeilDA