Не удается Получить доступ Ко всем полям Представления С помощью Отражения

#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. Это помогает.