Na API Android 11+, o Google lançou uma nova classe chamada Fragment
.
Nos vídeos, o Google sugere que, sempre que possível ( link1 , link2 ), devemos usar fragmentos em vez de atividades, mas eles não explicaram exatamente o porquê.
Qual é o objetivo dos fragmentos e alguns usos possíveis deles (além de alguns exemplos de interface do usuário que podem ser facilmente alcançados por visualizações / layouts simples)?
Minha pergunta é sobre fragmentos:
- Quais são os propósitos de usar um fragmento?
- Quais são as vantagens e desvantagens do uso de fragmentos em comparação ao uso de atividades / visualizações / layouts?
Perguntas sobre bônus:
- Você pode dar alguns usos realmente interessantes para fragmentos? O que o Google não mencionou em seus vídeos?
- Qual é a melhor maneira de se comunicar entre os fragmentos e as atividades que os contêm?
- Quais são as coisas mais importantes a serem lembradas quando você usa fragmentos? Alguma dica e aviso de sua experiência?
android
android-layout
android-fragments
android-activity
android-3.0-honeycomb
desenvolvedor android
fonte
fonte
Respostas:
Fragmentos são a solução do Android para criar interfaces de usuário reutilizáveis. Você pode obter as mesmas coisas usando atividades e layouts (por exemplo, usando inclusões). Contudo; fragmentos são conectados à API do Android, do HoneyComb e superiores. Deixe-me elaborar;
A
ActionBar
. Se você quiser que as guias lá em cima naveguem no seu aplicativo, você verá rapidamente que aActionBar.TabListener
interface fornece umFragmentTransaction
argumento de entrada para oonTabSelected
método. Você provavelmente poderia ignorar isso e fazer algo mais inteligente, mas estaria trabalhando contra a API, não com ela.As
FragmentManager
alças «de volta» para você de uma maneira muito inteligente. Voltar não significa voltar para a última atividade, como para atividades regulares. Isso significa voltar ao estado anterior do fragmento.Você pode usar o cool
ViewPager
com umFragmentPagerAdapter
para criar interfaces de furto. OFragmentPagerAdapter
código é muito mais limpo do que um adaptador comum e controla instanciações dos fragmentos individuais.Sua vida será muito mais fácil se você usar fragmentos ao tentar criar aplicativos para telefones e tablets. Como os fragmentos estão tão ligados às APIs do Honeycomb +, convém usá-los nos telefones também para reutilizar o código. É aí que a biblioteca de compatibilidade é útil.
Você ainda pode e deve usar fragmentos para aplicativos destinados apenas a telefones. Se você tem portabilidade em mente. Eu uso
ActionBarSherlock
e as bibliotecas de compatibilidade para criar aplicativos "com aparência de ICS", que têm a mesma aparência desde a versão 1.6. Você obtém os recursos mais recentes, comoActionBar
, com guias, estouro, barra de ação dividida, visor, etc.A melhor maneira de se comunicar entre fragmentos é a intenção. Quando você pressiona algo em um fragmento, você normalmente chama
StartActivity()
com dados. A intenção é passada a todos os fragmentos da atividade que você inicia.fonte
Não tenho certeza de quais vídeos você está se referindo, mas duvido que estejam dizendo que você deve usar fragmentos em vez de atividades, porque eles não são diretamente intercambiáveis. Na verdade, há uma entrada bastante detalhada no Guia do desenvolvedor, considere a leitura para obter detalhes.
Em resumo, os fragmentos vivem dentro de atividades e cada atividade pode hospedar muitos fragmentos. Como as atividades, eles têm um ciclo de vida específico, ao contrário das atividades, eles não são componentes de aplicativos de nível superior. As vantagens dos fragmentos incluem a reutilização de código e a modularidade (por exemplo, usando a mesma exibição de lista em muitas atividades), incluindo a capacidade de criar interfaces de vários painéis (principalmente úteis em tablets). A principal desvantagem é (algumas) maior complexidade. Geralmente, você pode obter o mesmo com visualizações (personalizadas) de uma maneira não padrão e menos robusta.
fonte
Um fragmento é uma parte da interface do usuário ou comportamento de um aplicativo que pode ser colocada em uma atividade que permite um design de atividade mais modular. Não estará errado se dissermos que um fragmento é um tipo de subatividade.
A seguir, são apresentados pontos importantes sobre um fragmento:
Um fragmento tem seu próprio layout e seu próprio comportamento com seus próprios retornos de chamada do ciclo de vida.
Você pode adicionar ou remover fragmentos em uma atividade enquanto ela estiver em execução.
Você pode combinar vários fragmentos em uma única atividade para criar uma interface do usuário com vários painéis.
Um fragmento pode ser usado em várias atividades.
O ciclo de vida do fragmento está intimamente relacionado ao ciclo de vida da atividade do host.
Quando a atividade é pausada, todos os fragmentos disponíveis na atividade também serão parados.
Um fragmento pode implementar um comportamento que não possui componente de interface do usuário.
Fragmentos foram adicionados à API do Android no Android 3 (Honeycomb) com a API versão 11.
Para mais detalhes, visite o site oficial, Fragments .
fonte
Esta é uma informação importante que encontrei nos fragmentos:
Fonte: https://www.pluralsight.com/blog/software-development/android-fragments
fonte
As atividades são os componentes de tela cheia no aplicativo com a barra de ferramentas; todo o resto são de preferência fragmentos. Uma atividade pai em tela cheia com uma barra de ferramentas pode ter vários painéis, páginas roláveis, caixas de diálogo etc. (todos os fragmentos), os quais podem ser acessados pelo pai e comunicados por ele.
Exemplo:
Atividade A, Atividade B, Atividade C:
vs
Atividade A, Fragmento 1, Fragmento 2, Fragmento 3:
fonte
Fragmentos são de uso particular em alguns casos, como onde queremos manter uma gaveta de navegação em todas as nossas páginas. Você pode inflar um layout de quadro com qualquer fragmento que desejar e ainda ter acesso à gaveta de navegação.
Se você tivesse usado uma atividade, teria que manter a gaveta em todas as atividades, o que resulta em código redundante. Este é um uso interessante de um fragmento.
Eu sou novo no Android e ainda acho que um fragmento é útil dessa maneira.
fonte
Eu sei que isso já foi discutido até a morte, mas eu gostaria de acrescentar mais alguns pontos:
Frags podem ser usados para preencher
Menu
s e podem lidar comMenuItem
cliques por conta própria. Dando assim mais opções de modulação para suas atividades. Você pode fazer coisas de ContextualActionBar e assim por diante sem que sua Atividade saiba sobre isso e basicamente pode separá-las das coisas básicas que sua Atividade lida (Navegação / Configurações / Sobre).Um Frag pai com Frags filho pode oferecer outras opções para modular seus componentes. Por exemplo, você pode facilmente trocar Frags, colocar novas Frags dentro de um Pager ou removê-las, reorganizá-las. Tudo sem a sua atividade saber nada sobre ela, apenas focando nas coisas de nível superior.
fonte
Fragments vive dentro da Atividade e possui:
Pense em Fragmentos como uma sub atividade da atividade principal a que pertence, não pode existir por si só e pode ser chamado / reutilizado repetidamente. Espero que isto ajude :)
fonte
1. Objetivos do uso de um fragmento?
fonte
Um fragmento vive dentro de uma atividade, enquanto uma atividade vive por si só.
fonte