Android кросс-интерфейсы активности - PullRequest
0 голосов
/ 21 декабря 2011

Скажем, у меня есть два активных действия: A (с окном) и B (с представлением, встроенным в A, но все же это его собственная деятельность).Действия находятся в разных пакетах, но выполняются в одном и том же процессе.

Представление в действии B добавляется к представлению в A, которое реализует интерфейс I.Объявление I находится в библиотеке, совместно используемой между A и B.

Так что я хотел бы предположить, что я мог бы сделать что-то вроде этого внутри экземпляра B:

viewInA = viewInB.getParent();
(I)viewInA;

Но я получаю ошибку приведения.Есть ли способ заставить это работать?

Небольшой самоанализ может легко доказать, что viewInA действительно реализует I.Пакет, в котором находится I, конечно, одинаков для обоих видов деятельности.

Мой набор ограничений в связи с ситуацией довольно уникален;Выполнение простой передачи сообщений с намерениями не будет работать.

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

1 Ответ

0 голосов
/ 21 декабря 2011

Все остальное в стороне, если вы получаете ошибку приведения в Java, это потому, что viewInA фактически не реализует I. Имейте в виду, что getParent () возвращает класс, реализующий ViewParent ... (т.е. я расширяю ViewParent ??)

Тем не менее, вы можете установить точку останова и проверить во время выполнения, какой тип viewInA имеет!

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