2015-09-30 5 views
0

Я пытался использовать FLAG_ACTIVITY_CLEAR_TOP, но я узнал, что он немного отличается от моей ситуации., разрушающий все другие виды деятельности

В моем проекте есть три вида деятельности, A, B, C.

Он движется, как -> B -> C и когда активность C создается, активности А и B разрушается. Должен ли я использовать FLAG_ACTIVITY_CLEAR_TOP или другой apis?

Спасибо.

+2

Когда A начинает B, должен ли A еще существовать? (т. е. может ли пользователь вернуться от B к A?). Кроме того, что должно произойти, когда пользователь нажимает BACK на C? –

+0

A должен существовать, когда A запускает B, и когда пользователь нажимает на C, закроет приложение. –

ответ

1

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

cActivityIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); 
cActivityIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
1

Я хотел бы сделать это с помощью «диспетчерской» механизма. Когда B хочет начать C, он должен вместо этого сказать A сделать это следующим образом:

Intent intent = new Intent(this, A.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
intent.putExtra("startC", true); 
// If B needs to pass additional parameters to C via A add them here 
intent.putExtra("key1", value1); 
intent.putExtra("key2", value2); 
... 
startActivity(intent); 

Это завершит B и A, создать новый экземпляр A и вызвать onCreate() на новый экземпляр A. В onCreate() из A, сделайте следующее:

super.onCreate(...); 
Intent intent = getIntent(); 
if (intent.hasExtra("startC")) { 
    // Need to start C 
    intent.setClass(this, C.class); 
    startActivity(intent); 
    finish(); 
    return; 
} 

Это заставит A начать C и закончить себя. Любые дополнительные функции, которые находятся в Intent, будут переданы по адресу C.

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