Intereting Posts
Как получить все целевые фильтры для приложения (с помощью root) Текстовое изображение потока вокруг изображения Как слить клиентское приложение OpenVPN с другим приложением Android? Как отключить кнопку возврата в android Android: рисовать круг с текстом внутри Рендеринг проблем и невозможность разрешения R в Android Studio 2.0, почему это происходит и как их решить? Android – Макет с эллипсисом с выравниванием по правому краю Android java.lang.VerifyError on startactivity в 1.6 IBM Worklight – Как включить отладку WebView в Android? Эмулятор не работает в Android Studio 2.0 Можем ли мы включить pie (т. Е. Position Independent Executables) для разделяемых библиотек в android-ndk r10c? Перетаскиваемый ящик с ручкой (вместо панели действий) поверх других приложений Учебники для Flurry Analytics в Android? Как применить стиль большого представления к уведомлению с помощью библиотеки Parse Как скрыть открытый ключ на Android?

Каков оптимальный способ совместного использования кода между действиями с различными базовыми классами?

У меня есть следующая проблема:
У меня есть абстрактный класс Activity , который позволяет называть его MyAbstractActivity , который содержит некоторый код, который я бы хотел использовать повторно (например: стандартное служебное вложение, общие пункты меню, общий код инициализации и т. Д.). Обычно я просто использовал его для подкласса моих конкретных действий и делал с ним.

Однако иногда мне нужно использовать другой супертип, например ListActivity или MapActivity .

Поэтому возникает вопрос: как избежать дублирования этого кода поддержки в рамках Activity, если мне нужно использовать другой базовый класс?

Я придумал решение, основанное на шаблоне декоратора, вроде этого:
Оформитель ,

Однако я вижу проблему с этим подходом: что делать с защищенными методами (например, onCreate () )? Должен ли я представить дополнительный класс «мост», который делает их общедоступными с целью декоратора, аналогично тому, как это представлено ниже (начиная немного выглядеть византином …)?

Краевой корпус

Любым другим путем?

Надеюсь, я сделал себя относительно ясно. Заранее благодарим за любые отзывы!

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

Если я правильно понимаю, ни фрагменты, ни шаблон декоратора не являются чистыми или подходящими решениями для того, что вы хотите выполнить. Они были разработаны для решения других проблем.

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

Кроме того, знайте, что вам не нужно подкласс ListActivity иметь ListView.