Navigation Drawer e usar somente uma Activity

872 views
Skip to first unread message

Bruno Vercelino da Hora

unread,
Sep 4, 2013, 8:15:45 AM9/4/13
to androidb...@googlegroups.com
Olá pessoal,

Eu estou estudando o Navigation Drawer para colocar numa aplicação minha.
Já achei alguns bons tutoriais na internet e esse não é o problema.

O que me chamou a atenção, e que queria ouvir a opinião de vocês que desenvolvem e tem mais experiência, é o fato de que, em geral, uma aplicação possui somente uma Activity e as "telas" são diferentes Fragments.
É isso mesmo? Esse tem sido o padrão das aplicações?
Eu cheguei nessa conclusão, observando opções de UI como Tabs, o próprio Navigation Drawer, ou técnicas para tablets.

Queria ouvir a opinião de vocês.

[]s

Rudson Lima

unread,
Sep 4, 2013, 8:24:28 AM9/4/13
to androidb...@googlegroups.com
Eu utilizo um Navigation na minha aplicação...

Minha tela principal é uma FragmentsAcitvity e todas as outras telas chamada através dele
são fragments...

Mas dependendo do que a tela que foi chamada vai fazer eu acredito que não seja obrigatório usar somente fragments;;

da uma sacada ai http://developer.android.com/design/patterns/navigation-drawer.html pode ser que as coisas fiquem mais claras..




--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.



--
Atenciosamente,
Rudson Lima

Diogo Henrique

unread,
Sep 4, 2013, 8:36:08 AM9/4/13
to androidb...@googlegroups.com
E isso mesmo @Bruno....a varias vantagens nisso, por exemplo, Tablet's, TV....

Diogo Henrique
(83)87344178
Rede Sociais: 




Bruno Vercelino da Hora

unread,
Sep 4, 2013, 8:41:52 AM9/4/13
to androidb...@googlegroups.com
Então, a parte teórica eu sei.
Já li toda essa parte da documentação.

Eu queria ouvir mesmo é o que o pessoal tem feito na prática.

Bruno Vercelino da Hora
--
"Mas Deus prova o seu próprio amor para conosco pelo fato de ter Cristo morrido por nós, sendo nós ainda pecadores." - Romanos 5:8
"Mas em nada tenho a minha vida como preciosa para mim, contando que complete a minha carreira e o ministério que recebi do Senhor Jesus, para dar testemunho do evangelho da graça de Deus." - Atos 20:24


--
You received this message because you are subscribed to a topic in the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/androidbrasil-dev/a71AjEPftBI/unsubscribe.
To unsubscribe from this group and all its topics, send an email to androidbrasil-...@googlegroups.com.

Eduardo Avallone de Souza

unread,
Sep 4, 2013, 9:28:11 AM9/4/13
to androidb...@googlegroups.com
Então Bruno, trabalhando com isso e conversando com o Neto do google ( ele esta sempre recomendando coisas que o google considera boa pratica no desenvolvimento de um app), eu diria que cada caso é um caso.
Já tive aplicações que criei uma Activity base e troquei apenas o fragmento sobre ela, a aplicação funcionava tanto em smartphone quanto em tablet. Um dos grandes problemas disso que tive é ficar controlando o botão do back, que algumas vezes se você estiver empilhando os fragmentos pode não funcionar da forma como você imaginou. Outro problema que também exigia um tratamento mais pesado era rotação, pois com vários fragmentos e uma activity tive vários problemas ao girar e algum fragmento por trás acabar não funcionando.
Em uma conversa com Neto em São Paulo tentei tirar algumas duvidas e uma delas era essa, ele comentou que o ideal seria mesclar as duas coisas, você pode ter uma activity base e alterar o fragmento dentro dela, porém algumas partes da aplicação cuja navegação for unidirecional você poderia usar outra activity. 


Eduardo Avallone de Souza
Eduardo Avallone de Souza

Bruno Vercelino da Hora

unread,
Sep 4, 2013, 9:48:53 AM9/4/13
to androidb...@googlegroups.com
Ah legal, vlw Eduardo!

Bruno Vercelino da Hora
--
"Mas Deus prova o seu próprio amor para conosco pelo fato de ter Cristo morrido por nós, sendo nós ainda pecadores." - Romanos 5:8
"Mas em nada tenho a minha vida como preciosa para mim, contando que complete a minha carreira e o ministério que recebi do Senhor Jesus, para dar testemunho do evangelho da graça de Deus." - Atos 20:24


Buiu

unread,
Sep 4, 2013, 1:50:36 PM9/4/13
to Android Brasil - Dev
Minha experiência com o app CTN Car, foi exatamente como o Eduardo colocou,

Criei apenas uma única activity e ficava gerenciando todos os fragments, navegação e back button, uma trabalheira do diabo, mas ok, funcionava,

Resolvi mudar e tirar essa responsabilidade de apenas uma única activity e dividir entre varias outras, resultado foi muito satisfatório, menos trabalho e dor de cabeça para gerenciar tudo em apenas um lugar. Dentro de cada activity vou gerenciando os fragments de acordo com a necessidade.

Lembrando que o app está disponível para SmartPhone e Tablet 7 e 10 polegadas.

Cristian Cardoso
www.ctncar.com.br

Bruno Vercelino da Hora

unread,
Sep 4, 2013, 1:58:57 PM9/4/13
to androidb...@googlegroups.com
Ah legal Cristian.

Uma dúvida, eu vi que você usa um Notification Drawer e tem uma lista de Telas.
Se eu entendi bem o que você falou, você criou diferentes Activities que também implementavam o Notification Drawer é isso?

[]s

Bruno Vercelino da Hora
--
"Mas Deus prova o seu próprio amor para conosco pelo fato de ter Cristo morrido por nós, sendo nós ainda pecadores." - Romanos 5:8
"Mas em nada tenho a minha vida como preciosa para mim, contando que complete a minha carreira e o ministério que recebi do Senhor Jesus, para dar testemunho do evangelho da graça de Deus." - Atos 20:24


Italo Naia

unread,
Sep 4, 2013, 2:06:14 PM9/4/13
to androidb...@googlegroups.com
vou aproveitar o que vcs tão falando para tirar uma duvida.....

pq vcs tem q controlar o Back Stack qdo usam Fragments, o android não cuida disso para vocês?

você só teria que decidir qdo aquele fragment entra no BackStack ou não usando o metodo addToBackStack()...

não entendi o porque controlar isso.....


2013/9/4 Bruno Vercelino da Hora <bruno...@gmail.com>

Eduardo Avallone de Souza

unread,
Sep 4, 2013, 2:15:30 PM9/4/13
to androidb...@googlegroups.com
Ola Italo,
no caso da aplicação que eu tinha desenvolvido por exemplo,
varios desses fragmentos podiam ser chamados a partir de um menu. Inclusive a home da minha aplicação. Agora imagina que eu estou na home abro o fragmento 1, depois em vez  de apertar o back e voltar para a home eu vou para o fragmento 2 no menu, e depois para a home atraves do menu também. A minha stack já tem o fragmento 1 e o 2 por baixo.... se eu apertar o back na home ele não vai sair do app como seria o comportamento normal, ele vai voltando os fragmentos. Nesse caso pra sair da app eu teria que aperta o back varias vezes e passar por varios fragmentos. Uma forma de evitar isso seria fazendo o replace do fragmento ao inves de fazer addToBackStack(), porém o meu conteudo seria recarregado todas as vezes que o fragmento fosse visualizado, e isso pode não ser o comportamento desejado.

Buiu

unread,
Sep 4, 2013, 2:18:30 PM9/4/13
to Android Brasil - Dev

@Bruno, nas telas que aparece o Drawer, aquela é apenas uma única activity trocando fragments,

Ao selecionar um item na listagem ou o botão Novo, ele chama uma nova activity, que passa a gerenciar os fragments que ali forem necessários.



Em 4 de setembro de 2013 15:06, Italo Naia <ital...@gmail.com> escreveu:



--

Cristian Cardoso
www.ctncar.com.br

Italo Naia

unread,
Sep 4, 2013, 2:20:54 PM9/4/13
to androidb...@googlegroups.com
Mas isso acontece com activity também......ou não?

a diferença é que em um vc vai centralizar esse tratamento (que ao meu ver é melhor) e no outro vai estar espalhado pelas activitys....


2013/9/4 Eduardo Avallone de Souza <edu...@gmail.com>

Carlos Alberto Pinto

unread,
Sep 4, 2013, 2:21:21 PM9/4/13
to androidb...@googlegroups.com
Boa Tarde, Tenho um Menu Drawer que esta com uma listagem simples, preciso fazer como no app do ML, e outrso uma com categorias, para dividir os assuntos, ja tentei varios exemplos que encontrei nenhum realmente funcional, consegue uma solução que foi usar o Multistview, mais o cliente aqui não gostou...

Se alguem conhecer algum exemplo funcional, please help, incluisive preciso disso no meu app.

Obrigado
Carlos


Carlos Alberto
Desenvolvedor Web/PHP/Vb.Net/C#
Iniciando projetos em Android/Java
Desenvolvedor Senior - CTIS
Alocado IBGE/GESIG/CODES

Meu primeiro APP publicado na loja do Android (Google Play)
Contas Trabalhistas (App para android)





Em 4 de setembro de 2013 15:06, Italo Naia <ital...@gmail.com> escreveu:

Buiu

unread,
Sep 4, 2013, 2:27:53 PM9/4/13
to Android Brasil - Dev
@Carlos, já tentou section?


Cristian Cardoso
www.ctncar.com.br

Bruno Vercelino da Hora

unread,
Sep 4, 2013, 2:29:32 PM9/4/13
to androidb...@googlegroups.com
@Buiu

Obrigado pelas respostas.
Só pra ficar claro, então quando você vai para essas novas Activities você não usa mais o Drawer certo?

Bruno Vercelino da Hora
--
"Mas Deus prova o seu próprio amor para conosco pelo fato de ter Cristo morrido por nós, sendo nós ainda pecadores." - Romanos 5:8
"Mas em nada tenho a minha vida como preciosa para mim, contando que complete a minha carreira e o ministério que recebi do Senhor Jesus, para dar testemunho do evangelho da graça de Deus." - Atos 20:24


Em 4 de setembro de 2013 15:21, Carlos Alberto Pinto <can...@gmail.com> escreveu:

Buiu

unread,
Sep 4, 2013, 2:32:45 PM9/4/13
to Android Brasil - Dev
Isso ai @Bruno, o Drawer é gerenciado por apenas uma Activity,

O que vem depois, e que não exibe o Drawer é uma nova Activity.


Cristian Cardoso
www.ctncar.com.br

Bruno Vercelino da Hora

unread,
Sep 4, 2013, 2:35:23 PM9/4/13
to androidb...@googlegroups.com
Obrigado @Buiu!

Bruno Vercelino da Hora
--
"Mas Deus prova o seu próprio amor para conosco pelo fato de ter Cristo morrido por nós, sendo nós ainda pecadores." - Romanos 5:8
"Mas em nada tenho a minha vida como preciosa para mim, contando que complete a minha carreira e o ministério que recebi do Senhor Jesus, para dar testemunho do evangelho da graça de Deus." - Atos 20:24


Eduardo Avallone de Souza

unread,
Sep 4, 2013, 2:39:18 PM9/4/13
to androidb...@googlegroups.com
Italo, isso pode acontecer com activity ( no caso do empilhamento), mas por exemplo no caso da activity você pode usar uma flag FLAG_ACTIVITY_NO_HISTORY para não deixar que o usuario volte para ela usando o back. Isso serve em alguns casos para evitar o back para telas erradas.

Buiu

unread,
Sep 4, 2013, 2:41:03 PM9/4/13
to Android Brasil - Dev
Esta é uma das formas de fazer, e que eu achei mais tranquilo, mas você pode também fazer tudo com apenas uma única activity (foi minha primeira experiência) funciona perfeitamente, mas da um pouco mais de trabalho.

Bruno Vercelino da Hora

unread,
Sep 4, 2013, 2:44:54 PM9/4/13
to androidb...@googlegroups.com
A única coisa que eu achei ruim dessa abordagem é o fato de você perder a Navigation Drawer quando você vai pra essas novas telas.
Eu teria que voltar para uma tela básica e então ir para outra opção.

Bruno Vercelino da Hora
--
"Mas Deus prova o seu próprio amor para conosco pelo fato de ter Cristo morrido por nós, sendo nós ainda pecadores." - Romanos 5:8
"Mas em nada tenho a minha vida como preciosa para mim, contando que complete a minha carreira e o ministério que recebi do Senhor Jesus, para dar testemunho do evangelho da graça de Deus." - Atos 20:24


Italo Naia

unread,
Sep 4, 2013, 2:49:54 PM9/4/13
to androidb...@googlegroups.com
se vc não adicionar o fragment no backstack o usuario não vai voltar pra ele também.......

mas beleza acho que já entendi no final da na mesma coisa...... rssss


2013/9/4 Eduardo Avallone de Souza <edu...@gmail.com>

Eduardo Avallone de Souza

unread,
Sep 4, 2013, 2:51:49 PM9/4/13
to androidb...@googlegroups.com
Sim, Bruno é como eu disse, os dois meios são bons e os dois devem ser usados, cada um para um caso. Agora não vi como é esse Drawer que você quer fazer, se ele for apenas um menu com opções fixas para ele ir para outras telas, as vezes compensa transformar ele em um componente e chamar nas telas que você for usar.

Buiu

unread,
Sep 4, 2013, 2:53:12 PM9/4/13
to Android Brasil - Dev
@Bruno era essa a ideia, não exibir o Drawer nas demais telas, outro exemplo que é de conhecimento de todos aqui, olha o app do Gmail.




Em 4 de setembro de 2013 15:49, Italo Naia <ital...@gmail.com> escreveu:



--

Cristian Cardoso
www.ctncar.com.br

Bruno Vercelino da Hora

unread,
Sep 4, 2013, 2:58:10 PM9/4/13
to androidb...@googlegroups.com
@Buiu entendi.

@Eduardo na verdade ainda estou pensando exatamente como irei fazer.
Mas como funciona essa ideia de componente. Não entendi o que você quis dizer.

Talvez para deixar mais claro, o aplicativo tem algumas funcionalidades:
- Calculadora (com vários tipos de cálculos pré-definidos)
- Uma lista com várias itens que levam a um detalhe das suas informações
- Um formulário com algumas sub-categorias
- Outras funcionalidades que virão mais para frente.

Bruno Vercelino da Hora
--
"Mas Deus prova o seu próprio amor para conosco pelo fato de ter Cristo morrido por nós, sendo nós ainda pecadores." - Romanos 5:8
"Mas em nada tenho a minha vida como preciosa para mim, contando que complete a minha carreira e o ministério que recebi do Senhor Jesus, para dar testemunho do evangelho da graça de Deus." - Atos 20:24


Douglas Drumond

unread,
Sep 4, 2013, 5:53:01 PM9/4/13
to androidb...@googlegroups.com

2013/9/4 Eduardo Avallone de Souza <edu...@gmail.com>

FLAG_ACTIVITY_NO_HISTORY para não deixar que o usuario volte para ela usando o back.

​Complementando o que o Ava mandou, se for uma Activity que nunca vai p/ histórico, pode também colocar android:noHistory="true" no manifest.​


Rudson Lima

unread,
Sep 4, 2013, 7:26:10 PM9/4/13
to androidb...@googlegroups.com

O próprio APP do gmail faz as duas opções, tanto ele faz o replace dos fragments e usa o back como ele abri novas telas e ai fazendo com o que o navegation fique em segundo plano..

No meu caso eu tenho acesso a 4 telas onde dou replace e não tive nenhum problema

Carlos Alberto Pinto

unread,
Sep 7, 2013, 12:00:24 AM9/7/13
to androidb...@googlegroups.com
Pergunta, ja consegui resolver quase tudo, gostaria de quando o usuario escolhe-se uma opcao, o fragment carregado muda-se de drawer para botao de retorno, pois na tela principa da nova versão do meu app, ira ter uma busca num banco de leis.

Ja consegui tudo menos trocar o botão = pór < (drawer) por (back).

Se alguem suber como , agradeço...


Obrigado
Carlos Alberto


Carlos Alberto
Desenvolvedor Web/PHP/Vb.Net/C#
Iniciando projetos em Android/Java
Desenvolvedor Senior - CTIS
Alocado IBGE/GESIG/CODES

Meu primeiro APP publicado na loja do Android (Google Play)
Contas Trabalhistas (App para android)





Diogo Henrique

unread,
Sep 9, 2013, 8:09:28 AM9/9/13
to androidb...@googlegroups.com
@Carlos, você precisa adicionar esse fragment no stack...estou errado galera ?

seria tipo...
beginTrans.replace(r.id.content,new FragmentA(),"A").addtoBackStack("A").commit();

Diogo Henrique
(83)87344178
Rede Sociais: 






Carlos Alberto Pinto

unread,
Sep 9, 2013, 8:13:51 AM9/9/13
to androidb...@googlegroups.com
Oi Diego, descule não entendi, o meu ja consegui substituir o conteudo principal pelo do fragment, so que quando ele carrega ainda continua com o icone no topo de menu, eu gostaria que mudasse para o de voltar , ja vi isso em alguns apps...

Isso que voce mostrou faria isso?

Carlos

Italo Naia

unread,
Sep 9, 2013, 8:20:50 AM9/9/13
to androidb...@googlegroups.com
cara 

acho q nativamente vc não consegue ter o Drawer e o Botão no icone........

no caso do Gmail acredito que deve ser outra activity............ eles tem a activity principal com a lista de emails....... e quando vc abre um email ele abre outra activity,...


2013/9/9 Carlos Alberto Pinto <can...@gmail.com>

Carlos Alberto Pinto

unread,
Sep 9, 2013, 8:26:36 AM9/9/13
to androidb...@googlegroups.com
Entao toda vez que eu carregar o fragment o menu permanece como se fosse um substitudo do conteudo pre carregado?

Se for isso agora, entendi.

Acho a documentacao do SDK do android, muito boa em parte, mais falta exemples e explicações maiores, programo tambem em Adobe Flex, é bem mais explicada.

Graças a deus tem os foruns e google busca...

Obrigado
Carlos

Diogo Henrique

unread,
Sep 9, 2013, 8:27:49 AM9/9/13
to androidb...@googlegroups.com
Eu entendi errado.....

seria....
getActivity().getSuportActionbar().setIcon(R.drawable.ic_icon_voltar); //no fragment
getSuportActionbar().setIcon(R.drawable.ic_icon_voltar); //logo apos selecionar o fragment no menu




Italo Naia

unread,
Sep 9, 2013, 8:30:08 AM9/9/13
to androidb...@googlegroups.com
Não entendi o que vc disse....

olha é apenas um "achismo" meu que os dois não funcionam junto....

mas tenta ai da um getActionBar().setDisplayHomeAsUpEnabled(true);

e ve se ele muda o botão

Italo Naia

unread,
Sep 9, 2013, 8:40:23 AM9/9/13
to androidb...@googlegroups.com
Acabei de ver um app aqui no meu celular que usa os dois juntos.... é possível que funcione então.......





2013/9/9 Italo Naia <ital...@gmail.com>

Buiu

unread,
Sep 9, 2013, 9:26:45 AM9/9/13
to Android Brasil - Dev
Abraço.
Cristian Cardoso
www.ctncar.com.br

Carlos Alberto Pinto

unread,
Sep 9, 2013, 9:53:27 AM9/9/13
to androidb...@googlegroups.com
E retorna o icone de voltar, mais a funcionalidade continua ativa, o menu drawer continua ativo com a fragment carregada (opção).

Fiz o uso do metodo 'isDrawerIndicatorEnabled()' para descobrir se esta ativo ou não, caso não em vez de fazer as opcoes do opene closeDrawer, faço um reload do fragment principal, com isso o usuário vai achar que retorno, ficou limpo e simples, mais foi graças a resposta do @Buiu, que resolveu.

Obrigado a Todos...

Carlos
Reply all
Reply to author
Forward
0 new messages