Como implementar o onBackPressed() em Fragmentos?
Existe alguma forma de implementarmos onBackPressed()
no Fragmento Android semelhante à forma como implementamos na atividade Android?
Como o ciclo de vida do fragmento não tem onBackPressed()
. Existe algum outro método alternativo para percorrer mais de 'onBackPressed()` em fragmentos do Android 3.0?
418
3
De acordo com @HaMMeRed a resposta aqui é pseudocódigo como deve funcionar. Vamos dizer que sua atividade principal se chama `BaseAtividade', que tem fragmentos de crianças (como no exemplo de SlidingMenu lib). Aqui estão os passos:
Primeiro precisamos criar uma interface e classe que implemente sua interface para ter um método genérico
Criar interface de classe 'OnBackPressedListener'.
Criar classe que implemente habilidades de 'OnBackPressedListener'.
Desde agora, vamos trabalhar no nosso código "BaseActividade" e nos seus fragmentos.
Crie um ouvinte privado no topo da sua classe "BaseActividade".
criar método para definir o ouvinte em "BaseActividade".
em override
onBackPressed
implemente algo como issoNo seu fragmento em
onCreateView
você deve adicionar o nosso ouvinteVoila, agora quando você clica de volta no fragmento, você deve pegar seu método personalizado de volta.
Se você queria esse tipo de funcionalidade você precisaria substituí-la na sua atividade, e então adicionar uma interface 'YourBackPressed' a todos os seus fragmentos, que você chama no fragmento relevante sempre que o botão voltar é pressionado.
Edit: I'gostaria de anexar a minha resposta anterior.
Se eu fosse fazer isso hoje, I'usaria uma transmissão, ou possivelmente uma transmissão ordenada se eu esperasse que outros painéis fossem atualizados em uníssono com o painel de conteúdo principal/main.
LocalBroadcastManager` na Biblioteca de Suporte pode ajudar com isso, e você apenas envia a transmissão em
onBackPressed
e assina em seus fragmentos que se importam. Eu acho que o Messaging é uma implementação mais desacoplada e que escalaria melhor, por isso seria a minha recomendação oficial de implementação agora. Basta utilizar a açãoIntent
's como um filtro para sua mensagem. envie sua recém-criadaACTION_BACK_PRESSED
, envie-a de sua atividade e escute-a nos fragmentos relevantes.Basta adicionar
addToBackStack
enquanto você está fazendo a transição entre seus fragmentos, como abaixo:se você escrever
addToBackStack(null)
, ele vai lidar com isso sozinho, mas se você der uma tag , você deve lidar com isso manualmente.