0

У меня есть 2 мероприятия в моем проекте, скажем, активность A и активность B. Оба A и B расширяют тот же суперкласс: BaseActivity.
Мы знаем, что в этом случае, скажем, если активна операция A, то вызывается метод суперкласса onCreate(), а затем следует действие onCreate() Activity A.Android. Родительская активность должна определять, какую детскую активность назвали.

Будучи в методе onCreate() родительского класса BaseActivity, как я могу определить, какая дочерняя активность была запущена?

ответ

0

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

Вы можете инициализировать некоторые значения в родительском onCreate(), а затем повторно установить его в childs.

1

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

Так что, если вы хотите поделиться некоторую функциональность между ActivityA и ActivityB просто положить его в HelperC

HelperC.someOperation (Context с, otherParams)

HelperC может сделать что-нибудь, что некоторые базы деятельности могли бы сделать. В конечном счете базовая активность никогда не будет существовать. Это всегда будет инстанцированная версия A или B

+0

Также, пожалуйста, изучите состав и наследование в Google, чтобы узнать о преимуществах композиции. У него действительно есть - против - есть религия. Например, «врач-врач» - это человек, который имеет роль врача. has-a является более гибким и динамичным. –

Смежные вопросы