#java #android #kotlin #reflection #view
Вопрос:
Я пытаюсь получить доступ к свойству просмотра Android mAttributes
здесь. Поскольку это общественная собственность, я попытался получить к ней доступ вот так.
View(this).mAttributes
Но это не сработало. Он говорит, что не может разрешить символ mAttributes
.
Я попытался использовать API отражения, чтобы удалить аннотацию @ViewDebug.ExportedProperty
из этого свойства, чтобы посмотреть, работает ли это таким образом.
Однако View(this).javaClass.declaredFields
это свойство вообще не отображается.
Не только это, View(this).javaClass.declaredFields
но и не показывает некоторые свойства, такие private CharSequence mContentDescription;
как.
Например, если мы взглянем на исходный код Android View, здесь вы увидите частную собственность mContentDescription
.
Если вы попытаетесь получить доступ к этому полю с помощью отражения, как показано ниже, оно выдаст сообщение об ошибке No field mContentDescription in class Landroid/view/View; (declaration of 'android.view.View' appears in /system/framework/framework.jar!classes3.dex)
View(this).javaClass.getDeclaredField("mContentDescription")
Я в замешательстве, почему API отражения возвращает только некоторые из объявленных полей.
Комментарии:
1. пожалуйста, введите свой код здесь.
2. @maryam Я обновил вопрос.
3. developer.android.com/guide/app-compatibility/…
4. Спасибо @MikeM. Это помогает.