Atividades reutilizáveis no Android

Guilherme Cherubini
Android Dev BR
Published in
3 min readFeb 9, 2021

Já teve o problema de ter que ficar copiando código de um lado para outro com o objetivo de criar telas com layouts e comportamentos semelhantes?

Hoje vamos criar uma atividade dispensável e reutilizável de forma nativa Android para resolver este problema, dispensável porque ela sempre se fechará quando algum botão for clicado e reutilizável porque ela poderá ser reutilizada sem a necessidade de duplicação de código.

Nesse exemplo vamos demonstrar uma tela de bem vindo e uma para enviar feedback que serão geradas através desta única atividade reutilizável. O resultado que vamos obter segue abaixo:

Como pode perceber as duas telas possuem a mesma estrutura apenas com textos e ações diferentes.

O que vamos aprender?

  • Criação de atividade reutilizável e dispensável
  • Passar parâmetros via intenção
  • Retornar um resultado a tela origem quando a atividade reutilizável for fechada
  • Processar diferentes resultados provindos das telas reutilizáveis

O que vamos precisar?

Um enum que represente os tipos das telas que você deseja mostrar para o usuário.

Esse enum será utilizado quando você quiser saber qual tela reutilizável foi mostrada, assim você poderá realizar alguma ação de sua necessidade após esse acontecimento.

O pacote de extras com as informações que gostaríamos de customizar e o seu tipo. Ex.:

Uma atividade reutilizável e sua viewModel:

Mãos na massa

Vamos começar adicionando o seguinte código para inicializar a atividade reutilizável com suas respectivas características (extras):

(este código pode estar contido em uma classe de router do seu projeto)

Dentro da atividade reutilizável, receberemos os extras e assim mostramos os elementos na tela:

Passando a responsabilidade para a sua ViewModel você consegue carregar os elementos através de elementos observáveis LiveData via data binding:

(esses observáveis devem estar presentes no xml da sua tela reutilizável)

Como já mencionado, a tela reutilizável será dispensável, então o click do botão deve fechar a tela. E para isso você deve acionar o método finish da atividade reutilizável:

Até aí tudo certo, mas e se quisermos retornar alguma informação ao fechar a tela reutilizável para a tela origem? Se quisermos por exemplo saber, qual tela reutilizável foi efetivamente fechada e com que dados?

É então que o enum “ReusableScreenType” aparece, que foi enviado inicialmente nos extras desta atividade. Com ele, você sabe qual tipo de tela reutilizável que foi aberta. Assim, você pode repassá-lo através de outro objeto, que apenas representa o resultado da atividade reutilizável:

Antes de encerrar a atividade você deve então adicionar este resultado:

Na atividade origem (a que gerencia as atividades reutilizáveis) você apenas precisa agora observar este resultado, através do código abaixo:

Assim, sua tela origem conseguirá reconhecer qual tela reutilizável que foi efetivamente encerrada, através do enum “screenType”. Como também, terá acesso a informações adicionais que você pode colocar no seu objeto de resultado, como por exemplo o texto inserido pelo usuário nesse caso.

Espero que esse post tenha agregado em algo e que possa ter te ajudado a escrever um código mais reutilizável e mais centralizado, trazendo um pouco mais de facilidade na manutenção e extensão do seu projeto.

Segue o link do projeto caso tenha alguma dúvida a mais:

Guilherme Cherubini

--

--

Guilherme Cherubini
Android Dev BR

I’m a mobile developer passionate about programming, software architecture, testing and music!