Ricky
Да, у вас может быть несколько «Деятельностей», определенных внутри одного класса. Но есть много препятствий и проблем с этим. Прежде чем ответить на этот вопрос, необходимо понять две вещи:
То, что вы спрашиваете, противоречит руководящим принципам Android по разработке, и эти руководящие принципы применяются в максимально возможной степени во время процесса компиляции, поэтому ничто из того, что я здесь говорю, не застраховано для работы с любым или всеми API версии Android SDK.
Различные среды разработки выполняют свои собственные проверки и компилируют несколько разными способами. Я буду говорить со стороны Затмения развития.
Методы, перечисленные здесь, предназначены для образования, но вводят много проблем. Для самообразования и теории это замечательная практика для изучения. Однако цель этого ответа состоит в том, чтобы научить вас тому, почему следует руководствоваться, а не обходить стороной.
Требования к мероприятию
Первое, что нужно понять, это то, что в Android есть определенные пункты, которые должны быть соблюдены для запуска действия. Оно должно: а) быть заявлено в манифесте; б) иметь фильтр намерений, описывающий, как его использовать; в) быть публичным классом; г) быть классом высшего уровня.
Несколько видов деятельности, один и тот же родительский класс
Это означает, что вы можете создать Activity внутри другого класса (так сказать, внутренней Activity), , но она должна быть объявлена static
и public
. Это ограничивает вашу активность в огромном количестве способов. Вызовы методов или членов, которые связаны с экземпляром (не статичны) с родительским классом, невозможны. Таким образом, вы теряете много времени и хакинг кода вокруг этого.
Во-вторых, это влияет на вашу декларацию Android XML для вашей активности. Вот тут-то и возникают настоящие проблемы, потому что, хотя это и можно сделать, оно очень конкретное, и никакой подтверждающей документации для этого не существует. Но это нормально, вы хотели знать, можете ли вы сделать ОДИН урок для своей деятельности.
Несколько видов деятельности, один и тот же класс
Что ж, Android определяет, какую Активность запускать, основываясь на ее Намерении. Вы можете объявить один и тот же класс несколько раз, но с разными Именами и Intent-фильтрами. Если это так, то вам нужно будет определить, что делать, исходя из намерения и дополнительных возможностей. Это будет сделано в вашем onCreate()
методе.
Выполнение таких действий означает, что вам придется кодировать две операции в в каждом месте, с которым вы обычно работаете. Это усложнит отслеживание ошибок для поддержки вашего продукта. Это также заставит каждую обычную операцию занимать больше времени, так как вам придется решать, какой метод выполнять. Например, если вы переопределите onDraw (), вы должны будете знать, какое действие вы рисуете. В конечном счете, это просто большой шморгасборг (sp? Действительно кто-нибудь знает, как пишется это слово?) «Что мне делать?!»
Настоящий вопрос
Зачем тебе это делать?
1. Если ответ заключается в том, чтобы сэкономить время на навигации по собственному проекту, поверьте мне ... Этого на самом деле не произойдет. Ваш код будет сложнее читать, интерпретировать и отлаживать.
Если ответ таков: вы хотите сэкономить файловое пространство, я бы пересмотрел приоритеты вашего проекта.
Если ответ заключается в том, что вы хотите поделиться функциональностью, рассмотрите возможность расширения Activity, а затем расширения вашего нового подкласса. Как вы думаете, они сделали ListActivity или TabActivity для начала?
Если вы хотите сохранить состояние, вы можете поместить его в SharedPreferences
или в Application
объект (если вы его расширили).
Как вы можете видеть, независимо от ваших потребностей, есть много других способов сделать это так, чтобы не доставлять хлопот ни вам, ни кому-либо еще.
Надеюсь, это поможет,
FuzzicalLogic