Tenho 2 atividades: Principal e Lista.
Em Principal, você pode abrir a Lista; em Lista, você pode abrir o Principal.
Eu gostaria que todas as aberturas de List não fossem salvas no 'histórico'. Portanto, pressionar de volta em Main não pode retornar para List.
É possível?
android
back-stack
Realtebo
fonte
fonte
finish()
imediatamente depoisstartActivity(...)
. Dessa forma, se o usuário pressionar VOLTAR em 'principal', não haverá nada para onde voltar.Respostas:
Ao iniciar a sua lista
Activity
, defina seusIntent
sinalizadores assim:O
FLAG_ACTIVITY_NO_HISTORY
sinalizador impede que o novoActivity
seja adicionado à pilha de histórico.NB: Como @Sam aponta, você pode usar no
i.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
lugar. Não há diferença funcional.fonte
Intent
bandeira que diga "só acrescenta à história se não regressar àActivity
origem".setFlags()
com emgetFlags()
vez deIntent.addFlags()
?No arquivo de manifesto, adicione:
para a atividade que você não deseja manter na pilha.
fonte
Use a nova tarefa com limpeza. Isso funcionou no meu caso, quando as outras opções não.
Limpe toda a pilha de histórico e inicie uma nova atividade no Android
fonte
Parece que, se você chamar finish () em sua atividade logo após abrir outra, aquela que foi concluída é removida da pilha.
por exemplo:
fonte
No meu caso particular
FLAG_ACTIVITY_NO_HISTORY
não funcionou. Nem trabalharamFLAG_ACTIVITY_NEW_TASK
ouFLAG_ACTIVITY_CLEAR_TASK
sozinhos.No entanto
FLAG_ACTIVITY_NEW_TASK
eFLAG_ACTIVITY_CLEAR_TASK
juntos funcionaram.fonte
Só queria adicionar uma maneira de fazer isso em Kotlin:
fonte
Intent(this, MainActivity::class.java).apply { addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK) }.also { startActivity(it) }
Resposta tardia, mas acrescenta alguma profundidade a outras respostas. Tudo se resume ao que você deseja que aconteça com outras atividades iniciadas a partir dessa atividade
Opção 1 - Apenas esta atividade não deve ter histórico de atividade de chamada
Depois é só fazer:
Opção 2 - Todas as atividades iniciadas a partir dessa atividade específica não devem ter histórico
Em seguida, adicione o manifesto da atividade de chamada:
Mas se você quiser ter um histórico em uma nova atividade, deverá remover manualmente o sinalizador:
Espero que isso esclareça outras respostas :)
fonte
Experimente FLAG_ACTIVITY_CLEAR_TOP se a atividade já estiver em execução:
fonte
adicione a bandeira
FLAG_ACTIVITY_NEW_TASK
ao seuIntent
http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_NEW_TASK
fonte
Você não pode substituir o botão Voltar em uma atividade específica para interromper a funcionalidade de 'retorno'?
fonte
Activity
não é uma boa prática.OnBackPressed
para isso.