2013-07-23 1 views
2

Я разрабатываю приложение и хотел бы повторно использовать действия, которые похожи, чтобы не копировать практически идентичный код. Давайте представим, у меня есть 4 вида деятельности: - MainActivity - Task1Activity - Task2Activity - MenuActivityДействия повторного использования Android в разных частях приложения

Task1Activity или Task2Activity действительно похожи, поэтому я хочу, чтобы создать только один вид деятельности под названием TaskActivity и передать некоторые данные через Intent для управления в пределах TaskActivity - другое поведение. Для упрощения можно считать, что разница будет только потоком навигации. Навигационный поток Я хотел бы осуществить это:

MainActivity < -> MenuActivity < -> Task1Activity

    or 

MainActivity < -> Task2Activity

Если я могу повторно использовать TaskActivity в 2 разных местах в моем навигационном потоке я бы:

ГлавнаяActivity < -> МенюАктивность < -> TaskActivity

    or 

MainActivity < -> TaskActivity

Проблема заключается в том, что, когда я определяю TaskActivity в моем файле манифеста мне нужно добавить что-то вроде:

<activity 
     android:name="br.com.example.TaskActivity" 
     android:label="Just an example" 
     android:launchMode="singleTask" 
     android:configChanges="orientation" 
     android:parentActivityName="br.com.example.MainActivity" > 
     <meta-data 
      android:name="android.support.PARENT_ACTIVITY" 
      android:value="br.com.example.MainActivity" /> 
    </activity> 

В определении TaskActivity выше, я урожай, чтобы сказать, какой будет моя активность PARENT_ACTIVITY. Но родительская активность для этого примера может быть MenuActivity или MainActivity. Как я могу определить свою TaskActivity, не указав, какова будет родительская активность? Если есть способ сделать это, следует ли ожидать каких-либо проблем при нажатии кнопки «Назад» на Android?

Спасибо, Carlos

ответ

3

Почему вы должны включить мета-данные для PARENT_ACTIVITY в манифесте? Это ограничение для того, что вы делаете? Вы можете объявить свою деятельность в AndroidManifest без метаданных для PARENT_ACTIVITY, поэтому ваша проблема будет решена.

+1

Если я это сделаю, может ли Android правильно управлять навигацией? –

+1

Если да, для чего это определение PARENT_ACTIVITY? –

+0

Отвечая на вопрос, мне не нужно включать PARENT_ACTIVITY, я просто не хочу снимать это определение, не зная, для чего это и какое влияние оно может вызвать. Вот почему я задаюсь вопросом, не нужно ли это, зачем кому-либо добавлять метаданные для PARENT_ACTIVITY? –

1

После некоторых исследований я обнаружил, что PARENT_ACTIVITY используется для кнопки UP в новых версиях Android. Поскольку я не хочу рисковать, и у меня нет методов тестирования в новых версиях Android, я решил иметь PARENT_ACTIVITY для всех моих действий в качестве моей MainActivity. Для повторного использования кода я буду использовать наследие.

+0

Что вы подразумеваете под наследием? – Ehsan