7
respostas

Como controlar o botão 'voltar' do smartphone

Estou tendo dificuldades na navegação entre Activities. Mais especificamente em relação ao botão 'voltar' do smartphone. Como eu posso de alguma forma "guardar" a Activity anterior para que ela possa ser recarregada trazendo informações adicionadas na Activity "atual" mesmo quando o botão voltar for acionado?

7 respostas

Oi Lucas, tudo bem ?

Cara acho que não entendi muito bem o contexto que você quer.

Mas lembra que as Activities são empilhadas, ou seja uma fica em cima da outra. E quando você dá um back, a activity que você está é destruída e retorna para a anterior, nesta é chamado o método onResume para que consiga ser novamente utilizável pelo usuário, eu acredito que pelo que disse, o comportamento que quer deve ficar no onResume.

Outra coisa, que talvez possa te ajudar é o uso de Fragments que a gente deve ver no terceiro curso de Android.

Se estiver errado perante o que disse me dá um feedback.

Espero ter ajudado,

Abraços

Oi, Matheus, tudo bem. E com você? Cara, entendi o que você disse e fez sentido, mas ainda não sei se vai resolver completamente meu problema. Vou tentar explicar melhor: Eu tenho uma main activity, que traz uma lista de registros. No meu menu, tenho um botão que traz uma lista com os registros favoritos. Eu uso a mesma activity nos dois casos, apenas preenchendo de formas diferentes a listView. Nessa lista de favoritos, quando eu seleciono um elemento dela, eu vou para uma segunda activity, onde os dados do registro selecionado são exibidos. Nessa tela, eu posso "desfavoritar" o registro, mas quando eu clico no botão de voltar, a activity anterior (da lista de favoritos) aparece, porém ainda contendo o registro que eu desfavoritei. E é esse o problema que quero resolver. Preciso, de alguma forma, ao clicar no botão de voltar, trazer a lista de favoritos atualizada. Como eu posso fazer isso? Preciso necessariamente usar uma activity diferente para a lista completa e a lista de favoritos? Ou dá pra ajustar esse problema de forma elegante?

Entendi !

Esse seu registro está no bd ou é puxado de um ws ?

Caso esteja no bd, você vai precisar chamar outra vez a busca para atualizar a tela. Caso seja um ws, você tem refazer a busca, apenas para atualizar a listagem.

Ainda acho que para esse seu projeto, o uso de Fragmentsseria bem justo e mais fácil de gerenciar, as responsabilidades ficariam em cada Fragment.

Espero ter ajudado.

Abraços

Eu puxo esses dados do bd mesmo. Mas a minha dúvida é como gerenciar a atualização da tela, porque eu tava usando a mesma listView pros dois casos. Tipo, no onCreate(), como eu vou saber se eu preciso trazer a lista de todos os registros, ou só os favoritos?

Lucas,

Da forma que está hoje, o código que você teria que fazer é bem feio, mas no curso 3 de android, aqui do alura a gente vê uma solução boa para isso, que são os Fragments.

Dá uma olhadinha lá !

Matheus, já passei da metade da aula 2 (sobre Fragments) no curso 3 de android, mas ainda não consegui entender onde esse recurso pode me ajudar. No exemplo usado na aula, 2 activities são aproveitadas na mesma tela, mas o que eu quero é preencher a mesma tela variando o conteúdo do que será apresentado, dependendo da opção selecionada pelo usuário (pelo visto você entendeu bem o que eu pretendo fazer), e não consigo ver onde a minha necessidade se encaixa nesse caso. Ainda não consegui descobrir como faço para que, quando o usuário clicar no botão de voltar, a lista que aparece na tela seja a mesma lista apresentada antes, seja de favoritos, seja de todos os registros existentes, etc. Poderia me dar uma luz?

Lucas,

O Fragment é um pedaço de tela, com seus comportamentos já definidos. O que eu sugeriria você a fazer é criar um Fragment para lista geral e outro Fragment para os Favoritos. Pois lá dentro você já teria encapsulado todo o comportamento para ambos os casos. E na hora de retornar você apenas precisava colocar o fragment correto, por exemplo, podendo ter um atributo que fale qual era o ultimo Fragment que você tinha.

Não sei se consegui ser tão claro... mas te ajudo a entender o que precisar !