#java #android
#java #Android
Вопрос:
Я пытаюсь перекомпилировать приложение Launcher2 (Gingerbread), чтобы я мог его модифицировать.
Тем не менее, я получаю довольно много ошибок (120ish), а именно:
mLeft, mTop, mBottom, mRight, mParent, mContext не могут быть преобразованы в переменную.
Они поступают из (что я все равно вижу), частных элементов виджета «TextView».
Есть ли какой-либо способ получить доступ к этим закрытым элементам, или мне нужно будет применить какое-то другое волшебство, чтобы это заработало?
Приветствия!
Ответ №1:
Они относятся к частным / защищенным членам View
и связанных классов. У многих из них есть средства получения / установки, например, все вышеперечисленные (если они просто получают значение) могут быть заменены на
getLeft()
, getTop()
, getBottom()
getRight()
и getContext()
методы класса View.
Однако некоторые из них могут не иметь общедоступных способов доступа к ним. В этом случае вы можете либо:
- Скопируйте соответствующие классы в свой проект и измените видимость элементов
- Используйте отражение (уродливое, может сломаться) для изменения приватных полей других классов.
Комментарии:
1. Фантастика, eclipse не показала их в автозаполнении. И я собрал его и запустил на своем устройстве — вот и все для первого в истории приложения для Android! 🙂 Приветствия!
2. @Marineio Ты смог это скомпилировать? Наряду со всеми отсутствующими переменными у меня возникли проблемы, из-за которых Eclipse не может найти android.app.StatusBarManager, android.renderscript.SimpleMesh и так далее
Ответ №2:
Скорее всего, вы не сможете скомпилировать Launcher2, кроме как в рамках полной сборки прошивки.