Android API 28 требует, чтобы класс расширял TypedArray, чтобы иметь конструктор - PullRequest
0 голосов
/ 19 февраля 2019

До API 28 любой класс, который расширяет TypedArray, не требует предоставления конструктора, в то время как TypedArray имеет собственный настраиваемый конструктор.Насколько я понимаю, в JAVA, когда родительский класс предоставляет собственный конструктор, дочерний класс, который его расширяет, должен предоставлять конструктор для вызова конструктора родителя.Так что случай TypedArray действительно странный для меня, но наш код следует странности и до сих пор работает нормально.

Однако в API 28 и выше внезапный запуск компилятора требует, чтобы все дочерние классы теперь предоставили конструктор.Я сделал так, как предлагал, и вызвал super (resources) внутри него, но потом я потерпел крах моего приложения, сообщив «Нет такого метода для super (resources)» ????Кто-нибудь знает, что происходит за кулисами?

Мой небольшой фрагмент кода для демонстрации требования наследования конструктора: enter image description here

Расширение класса TypedArray, как ни странно, не нуждается вконструктор enter image description here enter image description here

Но при переходе на API 28 он начинает запрашивать конструктор без явных изменений в классе TypedArray (конструкторчасть такая же).enter image description here enter image description here

...