В ваших кодах Canvas
- это родительский класс, AdvancedCanvas
- это дочерний класс.Трансляция с дочернего на родительский всегда разрешена, но трансляция с родительского на дочерний включает проверку типа и может вызвать исключение ClassCastException.
, например:
Animal animal = getAnimal(); // Maybe a Dog? Maybe a Cat? Maybe an Animal?
if (animal instanceof Dog) { // only successful in this condition
Dog castedDog = (Dog) animal;
}
Но Canvas
не являетсяэкземпляр AdvancedCanvas
, поэтому произошла ошибка.
Если хотите, вы можете создать собственное представление, это хороший пример
Отредактировано : Попробуйте это:
@Override
public void onDraw(Canvas canvas) {
super.onDraw(canvas);
AdvancedCanvas advancedcanvas = new AdvancedCanvas();
advancedcanvas.property1 = canvas.property1;//prepare advancedcanvas
advancedcanvas.setProperty2(canvas.property2)//or like this
draw(advancedcanvas);//then use advancedcanvas
}