Страницы

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

четверг, 21 марта 2019 г.

Как получить доступ к методам фрагмента, если есть ссылка на View?

Доброго есть класс к примеру
public class ItemConsist extends Fragment { public int id = 1; //переменная или метод класса, пофиг public View onCreateView(LayoutInflat....){} }
создаём экземпляр класса в контейнере, выводя его экземпляр на экран (несколько штук)
ItemConsist itemConsist = new ItemConsist(); layoutArrayItemConsist.addView(itemConsist.onCreateView(inflater, layoutArrayItemConsist, new Bundle()));
теперь мне нужно получить из этого контейнера значение public int id всех экземпляров ItemConsist. Там несколько экземпляров ItemConsist
int index = layoutArrayItemConsist.getChildCount(); for (int i = 0; index > 0; ++i) { View view = layoutArrayItemConsist.getChildAt(i); }
А как мне из этого View получить значение переменных и методов?


Ответ

Что бы получить доступ к методам класса наследника надо просто привести объект класса предка к конкретному типу, методы которого Вы хотите использовать. Следует учесть, что downcast (приведение к типу наследника) опасная операция, поэтому, что бы избежать ClassCastException желательно провести проверку на соответствие типу:
View view = layoutArrayItemConsist.getChildAt(i); if (view instanceof ItemConsist) { ((ItemConsist) view).someMethodOfItemConsist() }

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

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