Android.app Fragments vs. android.support.v4.app usando o ViewPager?

182

Tenho uma pergunta sobre as bibliotecas de suporte do Android, fragmentos e, como exemplo específico, a ViewPagerclasse. Minha intenção é criar um aplicativo com funcionalidade semelhante à amostra fornecida no site do desenvolvedor Android ( http://developer.android.com/training/animation/screen-slide.html ou http://developer.android.com/ treinamento / implementação-navegação / lateral.html ). Observando o código deles, notei que eles utilizam a android.support.v4.appbiblioteca, que, a partir de minhas pesquisas, é a única maneira de acessar a ViewPagerclasse.

Na minha situação, não tenho interesse em compatibilidade com versões anteriores. O nível mínimo de API é 14 (Ice Cream Sandwich) e o destino da compilação é 4,2 Jelly Bean. Na sua forma mais simples, meu aplicativo executa exatamente o mesmo que a segunda demonstração que eu vinculei no site de desenvolvimento do Android - basta passar entre três guias com conteúdo em cada uma.

Todos os artigos / postagens / respostas que li parecem favorecer fortemente a biblioteca de suporte da v4 . Agora, para minha (s) longa (s) pergunta (s):

  1. Qual é a melhor maneira de estruturar meu aplicativo - usando android.support.v4.appe, assim, usando SupportFragments, ou usar os Fragmentos fornecidos em android.app- e por quê?

  2. Se os fragmentos de android.appsão o caminho a percorrer, qual é a melhor maneira de abordar ViewPagers?

  3. Se os SupportFragments forem mais adequados para a tarefa, eu estimaria que eles possuem a mesma funcionalidade que a outra - então qual é o objetivo de tê-los por dentro android.app?

Espero que alguém com um entendimento mais claro possa me dar um pouco de esclarecimento porque estou confuso ...

jonstaff
fonte
1
você não pode usar Fragmentsse você estiver usando o ViewPagerque você precisa para usar a biblioteca de suporteSupportFragment
tyczj
1
SupportFragmentnão é uma classe no SDK do Android ...
Karakuri
2
@Karakuri Desculpe pela confusão; Não quero dizer uma classe literal SupportFragment, estou apenas me referindo à Fragmentclasse disponível no android.support.v4.app.
jonstaff
@jonstaff de qualquer forma você só pode usar a classe fragmento na biblioteca de suporte
tyczj
@tyczj Obrigado, mas isso realmente não responde à pergunta. Eu estou procurando mais por um motivo , uma vez que eu já sei não existe ViewPagerno android.app.
jonstaff

Respostas:

183

Você pode usar ViewPagercom fragmentos nativos do android.apppacote com os adaptadores do pacote android.support.v13.app . Você precisa usar o jar de suporte da v13 para isso.

Existem duas versões dos adaptadores que funcionam ViewPager, as que estão no v4pacote devem ser usadas com fragmentos de suporte, aquelas v13com fragmentos nativos.

O motivo pelo qual agora existem duas implementações de fragmentos é histórico: os fragmentos do android.apppacote foram introduzidos com o Android 3 apenas para tablets e a biblioteca de suporte foi criada para trazer fragmentos para telefones com versões mais antigas. No Android 4, você tem os dois.

Pela minha própria experiência, eu recomendaria o uso de fragmentos de suporte, mesmo durante o desenvolvimento para o Android 4. Aqui estão alguns motivos: Fragmento ou Fragmento de suporte?

brillenheini
fonte
3
Obrigado por isso! Sei que estou atrasado para a festa, mas essa resposta me ajudou muito.
Kyle
O support.v13 funciona no ViewPager ... até você tentar usar o ViewPager em um DialogFragment :-(
SteelBytes
android.appnão tem FragmentPagerAdapterisso, então torna-se impossível usar o viewpager com android.app.Fragment? alguma ideia aqui? existe alguma opção para pager de exibição antiga? Para conectar dinamicamente fragmentos a determinadas abas #
Nikhil
@ Nikhil, existem duas versões do FragmentPagerAdapter. O do android.support.v4.apppacote funciona com fragmentos de apoio, o outro no android.support.v13.appcom fragmentos 'normais'
brillenheini
Eu esperava usar a v13 para evitar o uso da v4. Acontece que a v4 é uma dependência da v13, então eu também poderia usar os fragmentos de suporte / exibir pager.
Vas
3

android.app.FragmentA classe está obsoleta desde o Android P ( link ), portanto, só android.support.v4.app.Fragmentdeve ser usada em qualquer lugar.

Artyom
fonte
1

Se você deseja segmentar a API 11+, não precisará da biblioteca de suporte [e seu apk real será menor, pelo menos).

Se você deseja oferecer suporte a qualquer coisa antes do Android 3.x, precisará da biblioteca de suporte.

É isso que você está perguntando?

Matt
fonte
9
você precisa usar a biblioteca de suporte para usar o ViewPager que é o que ele está perguntando sobre
tyczj
@ Matt Obrigado pela sua resposta, mas estou procurando a melhor solução que incorpore a ViewPagerfuncionalidade e uma explicação de por que essa solução é a melhor.
jonstaff