DialogFragment no Android, Entendendo e Utilizando

Receba em primeira mão, e com prioridade, os conteúdos Android exclusivos do Blog. Você receberá um email de confirmação. Somente depois de confirma-lo é que poderei lhe enviar os conteúdos exclusivos.

Email inválido.
Blog /Android /DialogFragment no Android, Entendendo e Utilizando

DialogFragment no Android, Entendendo e Utilizando

Vinícius Thiengo
(5502) (31) (1)
Go-ahead
"Não podemos estar em modo de sobrevivência. Temos de estar no modo de crescimento."
Jeff Bezos
Kotlin Android
Capa do livro Desenvolvedor Kotlin Android - Bibliotecas para o dia a dia
TítuloDesenvolvedor Kotlin Android - Bibliotecas para o dia a dia
CategoriasAndroid, Kotlin
AutorVinícius Thiengo
Edição
Ano2018
Capítulos19
Páginas1035
Acessar Livro
Treinamento Oficial
Android: Prototipagem Profissional de Aplicativos
CursoAndroid: Prototipagem Profissional de Aplicativos
CategoriaAndroid
InstrutorVinícius Thiengo
NívelTodos os níveis
Vídeo aulas186
PlataformaUdemy
Acessar Curso
Receitas Android
Capa do livro Receitas Para Desenvolvedores Android
TítuloReceitas Para Desenvolvedores Android
CategoriaDesenvolvimento Android
AutorVinícius Thiengo
Edição
Ano2017
Capítulos20
Páginas936
Acessar Livro
Código Limpo
Capa do livro Refatorando Para Programas Limpos
TítuloRefatorando Para Programas Limpos
CategoriaEngenharia de Software
AutorVinícius Thiengo
Edição
Ano2017
Capítulos46
Páginas599
Acessar Livro
Quer aprender a programar para Android? Acesse abaixo o curso gratuito no Blog.
Conteúdo Exclusivo
Receba em primeira mão, e com prioridade, os conteúdos Android exclusivos do Blog.
Email inválido

Opa, blz?

Nesse vídeo mostro como implementar Light Box (ou Modal Box) e Splash Screen (ou Loading Screen) no Android utilizando a classe DialogFragment. Note que a acho mais eficiente ante ao uso de uma Dialog comum em casos que há a necessidade de, por exemplo, uma conexão com a Web enquanto o usuário visualiza uma Slapsh Screen, ou quando há a necessidade apresnetar um formulário onde os dados serão salvas na Web, caso contrário não vejo tanto ganho ante ao uso do Dialog ou AlertDialog. O DialogFragment, indo pela linha do nome, é para ser utilizado como um Dialog comum, mas podemos também embedar o DialogFragment em uma View igualmente fazemos com Fragment comum. Fique atento quanto aos estilos e temas apresentados, os estilos são só os apresentados no vídeo mesmo, porém os temas são inúmeros, alias você pode criar o seu próprio. Se for utilizar o método onCreateDialog() ante o método onCreateView() para poder criar seu DialogFragment vindo de Dialog e não de View, você deve não utilizar o método setStyle() do DialogFragment e também comentar o método onCreateView(), pois esse prevalece ao uso do método onCreateDialog(). Perdi um bom tempo colocando os métodos do ciclo de vida do DialogFragment, mas acho que vale apena conhecer os métodos e saber que o funcionamento do ciclo de vida é basicamente o mesmo, pois como falei em vídeos anteriores sobre Activity e Fragment, nós devemos dominar o ciclo de vida dessas entidades para poder criar APPs que funcionem adequadamente. Mas é isso, vou evitar mais delongas e deixar você assistir ao vídeo.

Obs. : a cor do DialogFragment foi eu que coloquei, é personalizavel, então fique tranquilo que não é feio assim, você tem o controle de como será.

O link para download do projeto se encontra logo abaixo no post.

Segue link dos vídeos que podem ajudar na incrementação do uso do DialogFragment:

Volley no Android, Entendendo e Utilizando

Fragments no Android, Trabalhando com Múltiplas Activities

Ciclo de Vida e Otimização de Fragments no Android

Segue link da página apresentada no vídeo:

Página da classe DialogFragment no site oficial do Android

Vlw

Receba em primeira mão, e com prioridade, os conteúdos Android exclusivos do Blog.
Email inválido

Relacionado

Drag e Drop no Android, Entendendo e UtilizandoDrag e Drop no Android, Entendendo e UtilizandoAndroid
Iniciando com Dropbox API no AndroidIniciando com Dropbox API no AndroidAndroid
Download e Upload com Dropbox API no AndroidDownload e Upload com Dropbox API no AndroidAndroid
ExpandableListView no Android, Entendendo e UtilizandoExpandableListView no Android, Entendendo e UtilizandoAndroid

Compartilhar

Comentários Facebook (2)

Comentários Blog (29)

Para código / script, coloque entre [code] e [/code] para receber marcação especifica.
Forneça seu nome válido.
Forneça seu email válido.
Forneça o comentário.
Enviando, aguarde...
26/05/2018
Boa tarde, Thiengo. Tenho um RecyclerView populado com objetos. Estou tentando fazer com que ao clicar em um item da lista, um objeto, abra um DialogFragment mostrando atributos deste objeto. Procurei alguns tutoriais mas não consegui avançar. Tem alguma dica que possa ajudar? Abraço!
Responder
Vinícius Thiengo (1) (0)
27/05/2018
Weriks, tudo bem?

Você precisa saber como vincular o listener de clique ao RecyclerView. Você consegue isso colocando o código de clique no ViewHolder deste framework de lista.

Tenho dois conteúdos que vão lhe ajudar com isso, seguem links:

-> https://www.thiengo.com.br/recyclerview-material-design-android-parte-2

-> https://www.thiengo.com.br/animacao-onlongpress-e-gridlayoutmanager-em-recyclerview-material-design-android-parte-3

Weriks, com isso será fácil aproveitar o conteúdo de DialogFragment disposto acima para então colocar a funcionalidade de "clique and show object content" em seu aplicativo.

Algumas outras alternativas de dialog você encontra no Android-Arsenal, alternativas que podem já conter o layout requerido em seu domínio do problema e exigindo menos linhas de código de sua parte:

-> https://android-arsenal.com/tag/30?sort=rating

Abraço.
Responder
27/05/2018
Tudo bem, sim! Esqueci me mencionar que já tenho o RecyclerView funcionando. Implementei de forma que ao clicar é aberta uma outra activity mostrando os atributos do objeto clicado. Vou estudar o conteúdo e posto o feedback. Obrigado!
Responder
29/05/2018
Boa noite, Thiengo! Consegui criar o DialogFragment com os objetos do RecyclerView. Porém estou com um problema. Dependendo do objeto, o tamanho em tela ocupado pelo DialogFragment varia. Inclusive atravessa o topo e a base.
É possível deixar um tamanho pré configurado que seja portável para outras telas? É possível limitar o DialogFragment para mostrar sem ultrapassar a ActionBar, por exemplo? Obrigado pelos tutoriais! Tem ajudado bastante! Abraço!
Responder
Vinícius Thiengo (0) (0)
29/05/2018
Weriks, faça o seguinte.

Coloque como ViewRoot do layout do DialogFragment um ScrollView, dessa forma a expansão que está ocorrendo tende a parar.

Caso não conheça o ScrollView, veja o conteúdo do link a seguir:

-> https://www.thiengo.com.br/scrollview-horizontalscrollview-no-android-entendendo-e-utilizando

Trabalhar com o Scroll, em meu ponto de vista, é uma melhor opção ante definir tamanhos para o DialogFragment.

Abraço.
Responder
30/05/2018
Bom dia, Thiengo! Já havia implementado o ScrollView. E mesmo assim não deu certo. Vou lhe enviar algumas imagens pelo Facebook.
Responder
01/06/2018
Boa tarde, Thiengo! Venho com mais um problema que não estou sabendo resolver. Utilizo um DialogFragment para mostrar informações. Porém, em versões mais antigas do android, como 4.1, ele não mostra de forma devida. Já utilizo o support.v4.app  no DialogFragment.

Imagem na versão 4.1: https://ibb.co/cqQvLy
Imagem na versão 7.1: https://ibb.co/nB1XYJ

Qualquer dúvida é só perguntar. Abraço!
Responder
Vinícius Thiengo (0) (0)
06/06/2018
Weriks, tudo bem?

No método onCreateDialog() de seu DialogFragment coloque o código a seguir:

...
val dialog = super.onCreateDialog( savedInstanceState )
dialog.window!!.requestFeature( Window.FEATURE_NO_TITLE )
return dialog
...

Veja se assim a barra de topo branca da caixa de diálogo sai das versões abaixo do Android 21. E se as outras Views se ajeitam no layout.

Para saber mais sobre esse problema, estude todos os códigos Kotlin no link a seguir:

-> Dialog de criação de tarefa: https://www.thiengo.com.br/seguranca-e-persistencia-android-com-a-biblioteca-hawk#title-12

Abraço.
Responder
fabiano (1) (0)
25/04/2018
Thiengo, o mais estranho é que não aparecem os botões de confirmar e cancelar e não consigo digitar nada no EditText, não setei nada no estilo ou no tema, o que pode ser?
Responder
Vinícius Thiengo (0) (0)
28/04/2018
Fabiano (ou Rafael), tudo bem?

Se não me engano, até mesmo os botões, quando se tratando do DialogFragment, somos nós developers que temos de definir no layout que será utilizado.

Chegou a fazer isso?

Abraço.
Responder
14/03/2017
Thiengo tranquilo? como faço para fechar o dialog pela a activity que o chamou ? Exemplo : fechar o dialog pela MainActivity.

obrigado.
Responder
Vinícius Thiengo (0) (0)
16/03/2017
Allan, tudo bem aqui.

Você pode fazer da seguinte maneira:

FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
Fragment fragAnterior = fm.findFragmentByTag( ?sua_frag_key? );
if (fragAnterior != null) {
     ft.remove( fragAnterior );
}

Assim deve funcionar sem problemas. Lembrando que sua Activity deve herdar de AppCompatActivity ou diretamente de FragmentActivity. Abraço.
Responder
Ruan Alves (1) (0)
10/05/2015
Thiengo bllz? seguinte como faço para definir que a dialog se adapte aos diferentes tamanhos de tela, pois a que eu estou fazendo é estilizada, e preciso que fica agradavel o tamanho para diferentes tamanho de telas .. vlw
Responder
Vinícius Thiengo (0) (0)
10/05/2015
Fala Ruas, blz?
Utilize DPs, WRAP_CONTENT e MATCH_PARENT nos atributos layout_width e layout_height. Provavelmente deve ser o suficiente para Dialogs. Abraço
Responder
Ruan Alves (1) (0)
14/04/2015
Como sempre ... fodástico!
Responder
10/03/2015
Sabe me dizer se é possível popular um DialogFragment com OptionMenu?

Tentei utiliazar o onCreateOptionMenu, mas não apareceu.
Responder
Vinícius Thiengo (0) (0)
11/03/2015
Fala Marcelo, blz?
Como na bar da Activity? Se não me engano não é possível, porém vc pode tentar construir um na mão, crie um layout separado e depois somente dê um include no layout do DialogFragment, já fiz assim uma vez quando queria a bottom bar de minha APP de uma maneira que não tinha nada nativo que me ajudasse, logo criei a bottom bar e somente dei o include depois. Abraço
Responder
Carlos Andrade (1) (0)
23/02/2015
Thiengo! Para passar valor entre o Dialog e a Activity que o chamou uso intent ou acesso os objetos da Activity de boa?
Responder
Vinícius Thiengo (0) (0)
24/02/2015
Fala Carlos, blz?
Pode utilizar métodos públicos de sua Activity tanto para buscar valores (getters) quanto para seta-los (setters), não aconselho trabalhar diretamente com variáveis de instancias públicas em sua Activity. Mas para acessar a Activity dentro de seu DialogFragment vc terá de realizar o cast, tipo:

((MainActivity) getActivity()).setDado(dado);

Abraço
Responder
Marco Aurelio (0) (0)
19/02/2015
Olá Blz?

Muito bom o seu blog, me tirou muitas duvidas. Porém estou com uma dúvida quanto a chamada do "dialogframent". Vc chama pelo android:onclick no button, mas se eu quizer chama-lo apartir de um botão da ActionBar "<menu ><item....../>?
Responder
Vinícius Thiengo (0) (0)
20/02/2015
Fala Marco, blz?
Pode chamar de qualquer lugar, coloquei dentro do button somente para exemplo. Abraço
Responder
31/01/2015
Muito Boa a sua Video Aula, parabens, muito mesmo.Mas me restou uma duvida. Toda vez que crio um botão ele vai para o mesmo Dialog Fragment. Como posso fazer com que dois botões  acesse dois Dialog Fragment diferentes?
Responder
Vinícius Thiengo (0) (0)
01/02/2015
Fala William, blz?
Não, vc pode criar mais de um botão e chamar DialogFragments diferentes, basta ter os DialogFragments declarados na APP. Era isso? Abraço
Responder
01/02/2015
Sim era isso, mas seria muito se eu pedisse apenas um exemplo? Para uma maior compreensão..Obrigado
Responder
Vinícius Thiengo (0) (0)
02/02/2015
William, utilize o mesmo Script que já existe, porém acrescente mais um botão com um outro id, faz o mesmo procedimento que o botão anterior, porém abrindo dentro do listener do novo botão o próprio Dialig dele, pode ser o mesmo tipo de DialogFragment ou outra implementação... ve se consegue ai. Abraço
Responder
Rodrigo (2) (0)
11/09/2014
Oi Thiengo tudo bom? muito bom seu vídeo e seu blog é excelente, mas eu queria fazer uma pergunta a vc que não tem muito haver com o conteúdo do vídeo, Na verdade nem é bem uma pergunta eu só queria mesmo é saber a opinião de uma pessoa mais experiente no assunto.. É o seguinte, eu tenho bastante ouvido falar de um tal site chamado "Fabrica de Aplicativos" como já diz o nome é um site onde vc faz apps sem saber nada de programação e tals, e como ele tem vários por ai, então eu queria saber, Você como um profissional da área o  que vc acha disso? Vale apena fazer uma app em um site desses, e os recursos são muito limitados? Desde já agradeço pela resposta, sempre acompanho seu blog ele é 10. Abraços
Responder
Vinícius Thiengo (1) (0)
11/09/2014
Fala Rodrigo, blz?
Então, se vale a pena ou não depende mt de suas necessidades de projeto, eu não conheço o site / sistema, pois nunca fiz uma APP nele, mas aparentemente ele é uma excelente escolha se vc está com um projeto em mente que não requer recursos mais avançados (um blog em versão mobile, por exemplo). Como assim recursos avançados se vc nem conhece o sistema deles? Bom, por ser simples de fazer partindo que o usuário não precisa ser programador e que não tem nenhum desenvolvedor profissional do outro lado pegando os requisitos e fazendo a APP na "unha", acredito que deve sim haver uma série de limitações. Por exemplo, mt provavelmente vc não pode acessar o código fonte do AndroidManifest.xml que é o arquivo de configuração da APP, e dependendo da APP que vc quiser criar o acesso na mão ao código do AndroidManifest.xml é inevitável, mas esse foi apenas um exemplo. Resumindo, se seu projeto é algo que não vai crescer mt, e que em parte é a versão mobile de um simples sistema, acredito que esse site pode sim ser a melhor opção e tb mt mais barato, caso contrário ou vc terá de programar ou contratar um developer ou uma empresa para desenvolver a APP. Deu para ajudar? Abraço.
Responder
Rodrigo (1) (1)
11/09/2014
Muito obrigado cara, eu tava dando uma sondada nele, e vendo alguns videos e é mesmo como vc disse, da pra fazer coisas simples, mas uma app mais inovadora, robusta tipo a app do seu blog nem pensar.. Acho q é mais pra quem precisa de uma coisa simples e rápida mesmo. Muito obrigado cara sempre é bom ouvir a opinião de quem verdadeiramente entende do assunto! me ajudou bastante. Abraços e fica com Deus!
Responder
Wiliam (0) (0)
09/09/2014
Show de bola Thiengo,  parabéns!
Responder