У кого-нибудь есть информация или документация по модификатору vArea функции findViewById ()? - PullRequest
0 голосов
/ 06 октября 2018

Я видел этот фрагмент кода, используемый здесь в решении для настройки фоновых изображений на макетах в Android:

Так что в ходе обсуждения была сделана рекомендация изменить:

RelativeLayout fondo_area = 
(RelativeLayout)findViewById(R.id.background_areas);

To:

RelativeLayout fondo_area = 
(RelativeLayout) vArea.findViewById(R.id.background_areas);

Похоже, это то решение, которое мне нужно, но я не могу найти какую-либо документацию или информацию где-либо еще относительно этой модификации, ее контекста или требований к использованию.

Ссылка на вопросы и ответы, которые я обнаружил:

NullPointerException при рисовании фона RelativeLayout

Любая помощь приветствуется.Спасибо.

1 Ответ

0 голосов
/ 07 октября 2018

Это определенно переменная.

final View vArea = li_area.inflate(R.layout.areas_detalles_cpa, null);

final указывает, что значение не может быть изменено.View указывает тип переменной.vArea - это имя переменной.Тогда все справа от = является выражением, значение которого присваивается vArea.Если вам это не кажется правильным, я снова призываю вас вернуться к базовому обучению Java, потому что вы, возможно, что-то упустили в первый раз.Возможно, это не более чем неправильное использование некоторой терминологии.Если это поможет, я занимаюсь разработкой на Java около 20 лет.Я говорю, что не для того, чтобы хвастаться или опускать вас, но просто для того, чтобы дать представление о моем уровне опыта и заверить вас, что я исхожу из положения, в котором есть некоторые знания по этому вопросу.

Что касается причиныпочему упомянутое вами изменение решает вашу проблему.Я не могу быть уверен, потому что я не знаю точно, в чем проблема и не видел весь соответствующий код, но вот мое предположение.

RelativeLayout fondo_area = (RelativeLayout)findViewById(R.id.background_areas);

Это дает вамошибка, которая findViewbyId не определена (или не может быть решена, или какова бы ни была формулировка).Это потому, что этот код взят из Activity, для которой этот метод определен, а вы вставили его во фрагмент, а это не так.

RelativeLayout fondo_area = (RelativeLayout) vArea.findViewById(R.id.background_areas);

Теперь он работает, потому что вывызов findviewById для View, где этот метод определен.Это звучит как правдоподобное объяснение?

На второстепенной ноте вы можете удалить приведение к RelativeLayout.С одним из последних обновлений Android, который больше не нужен.Это может быть вопрос нацеливания на Java 7 или выше, я точно не помню.

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