Шаблон дизайна для расширения деятельности Android? - PullRequest
5 голосов
/ 29 апреля 2010

При программировании на Android я заканчиваю писать родительское действие, которое расширяется несколькими другими. Немного похоже на ListActivity. Моя родительская деятельность расширяется Activity. если я намереваюсь использовать Map или List, я не могу использовать родительское действие в качестве суперкласса - дочернее действие может явно расширять только одно действие. Таким образом, я пишу свои родительские действия с той же логикой для Activity, ListActivity, MapActivity и т. Д.

Что я ищу, так это какая-то особенность функциональности / шаблон дизайна, который поможет в этом случае. Есть предложения?

Ответы [ 3 ]

3 голосов
/ 29 апреля 2010

Мне действительно не нравятся ListActivity, MapActivity и т. Д. В основном это действия, которые просто добавляют один элемент представления за счет некоторой гибкости. При правильном добавлении MapView или ListView в ваш XML вы получаете то же самое, что может напрямую расширять производный суперкласс Activity. Так что просто не используйте ни один из этих классов SomethingActivity по большей части.

1 голос
/ 29 апреля 2010

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

1 голос
/ 29 апреля 2010

В итоге у меня была база MyAbstractActivity extends Activity, которая включает в себя разделяемую логику, и MyAbstractListActivity extends MyAbstractActivity, которая имитирует ListActivity (раздувает layout.R.id.list, layout.R.id.empty и т. Д .; там почти ничего не происходит).

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