Почему я не могу получить доступ к закрытым полям пакета в пакете android.widget? - PullRequest
2 голосов
/ 08 октября 2010

Я пытаюсь переопределить класс Android View, чтобы немного изменить функциональность.Но мне нужно изменить поле, в котором нет метода установки.Я поместил подкласс в пакет под названием android.widget.Почему я не могу получить доступ к полям закрытого пакета?Я заметил, что компилятор говорит, что они «не могут быть разрешены», а не недоступны.Это как-то связано с тем, как построен Android.jar?

Ответы [ 2 ]

4 голосов
/ 08 октября 2010

Эти методы не являются частью Android SDK и поэтому недоступны для вас непосредственно из приложения SDK. Если вы создаете прошивку, вы можете получить к ней доступ напрямую. Предположительно, ваш подкласс может получить их с помощью рефлексии, хотя имейте в виду, что такие поля (или любые другие материалы, не относящиеся к SDK) могут быть изменены в любом выпуске Android.

2 голосов
/ 08 октября 2010

Это также побочный эффект загрузчиков классов.Ваш пакет android.widget отличается от пакета android.widget, используемого системой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...