Страницы

Поиск по вопросам

пятница, 29 марта 2019 г.

Синтаксис вызова findViewById()

В книгах по основам Java было написано, что для вызова метода нужно указать сначала ссылку на объект, а потом после точки сам метод. Если же метод статический то указывается класс, а потом после точки метод. А в книге по Android читаю TextView brands = (TextView) findViewById(R.id.brands);. Почему не указывается ни класс ни объект? Это из-за того, что объявление метода находится в том же классе что и вызов? Или же это просто упрощение, а AndroidStudio в дальнейшем при сборке сама добавляет всё что нужно?


Ответ

метод findViewById() - метод класса Activity (и ее наследников), поэтому при вызове данного метода в классе активити указывать экземпляр класса нет необходимости, это ее собственный метод. Если вы непременно хотите поставить точку и обатиться к объекту, то можете вызывать этот метод у текущего экземпляра класса:
Button btn = this.findViewById(R.id.button);
Если найти элемент на разметке нужно не в пределах активити, а в фрагменте, диалоге (эти классы не содержат собственного метода findViewById()) или другом ViewGroup, то для поиска необходимо использовать тот экземпляр ViewGroup, в котором предположительно находится данный элемент, например в фрагменте:
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment1, container, false); Button btn = rootView.findViewById(R.id.button); return rootView; }
в этих случаях используется метод findViewById() класса View, а не Activity и указывать экземпляр класса, в котором осуществлять поиск обязательно, так как поиск осуществляется за пределами экземпляра класса View

Комментариев нет:

Отправить комментарий