2012-01-13 2 views
1

Мне было интересно, если вместо того, чтобы создавать новый класс для каждого вида деятельности, можно ли создавать многоуровневые действия в рамках одного класса?Несколько Activites в одном классе на Android

Так что определите различные макеты xml для различных действий внутри одного класса, вместо того, чтобы создавать новые классы для каждого вида деятельности.

Благодаря

+1

Если все ваши действия делают то же самое, вы можете использовать setContextView (R.layout.whatever); несколько раз, чтобы изменить ваш вид – Blundell

+0

setContentView *** – Blundell

ответ

0

Нет, вы должны поместить каждую активность в отдельном классе. Посмотрите на вопрос this. Кто-то задается вопросом о том же, что и вы.

0

Рики,

Да, вы можете иметь несколько «деятельности», определенные в одном классе. Но есть много препятствий и проблем с этим. Перед тем, как ответить на этот вопрос, две вещи, которые должны быть поняты:

  1. Что вы спрашиваете, идет против Android руководящих принципов для развития, и те принципы, применяются как много способов, как они могут быть в процессе компиляции, так ничего, что я говорю здесь, не застраховано, чтобы работать с любыми или всеми версиями API Android SDK.

  2. Различные среды разработки выполняют свои собственные проверки и компилируются несколькими различными способами. Я буду говорить со стороны Eclipse развития.

  3. Методы, перечисленные здесь для образования, но введите лот вопросов. Для самообразования и теории это замечательная практика для изучения. Однако цель этого ответа состоит в том, чтобы проинформировать вас о том, почему руководство следует соблюдать, а не обойти стороной.

Требования к деятельности

Первое, что нужно понять, что Android имеет определенные точки, которые должны быть выполнены для действия для запуска. Он должен: а) быть объявлен в манифесте; б) иметь фильтр намерений, описывающий, как он должен использоваться; c) быть публичным классом; d) быть классом верхнего уровня.

Множественные развлечения, тот же родительский класс

Это означает, что вы можете создать активность внутри другого класса (внутренней деятельности, так сказать), но он должен быть объявлен static и public. Это ограничивает вашу деятельность огромным количеством способов. Вызовы методам или членам, которые связаны с экземпляром (не статическими) с родительским классом, невозможны. Таким образом, вы теряете много времени и взломать код вокруг этого.

Во-вторых, это влияет на ваше объявление Android XML для вашей деятельности. Здесь возникают реальные проблемы, потому что, хотя это может быть сделано, это очень специфично, и нет никакой подтверждающей документации, чтобы это произошло. Но это нормально, вы хотели знать, можете ли вы сделать ОДИН класс для своей деятельности.

Множественные развлечения, тот же класс

Ну, Android определяет активность для выполнения на основе его намерениях. Вы можете объявить один и тот же класс несколько раз, но с разными Именами и Intent-фильтрами.Если это так, то вам нужно будет определить, что делать на основе намерения и включенных дополнений. Это будет сделано в вашем методе onCreate().

Ведение дел таким образом означало бы, что вам нужно было бы ввести код для двух видов деятельности в каждый место, которое вы обычно имели бы с одним. Это затруднит отслеживание ошибок для поддержки вашего продукта. Это также приведет к тому, что каждая рутинная операция займет больше времени, так как вам придется решить, какой метод выполнить. Например, если вы перегрузите onDraw(), вам нужно будет узнать, какую активность вы рисуете. В конце концов, это просто большой schmorgasborg (sp? кто-нибудь умеет называть это слово?) «Что мне делать ?!»

Реальный вопрос

Почему вы хотите сделать это в любом случае? 1. Если ответ заключается в том, чтобы сэкономить время на свой собственный проект, поверьте мне ... Это не произойдет. Ваш код будет сложнее читать, интерпретировать и отлаживать.

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

  2. Если ответ заключается в том, что вы хотите использовать общие функции, рассмотрите возможность продления действия, а затем расширение вашего нового подкласса. Как вы думаете, с чего они создали ListActivity или TabActivity?

  3. Если Вы хотите, чтобы состояние сэкономить, вы можете указать его статус: SharedPreferences или ваш объект Application (если длина текста у него есть).

Как вы можете видеть, независимо от ваших потребностей, есть много других способов, чтобы идти об этом таким образом, чтобы не причинить вам или кому-либо еще хлопоты.

Надеется, что это помогает,

FuzzicalLogic

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