Diferença entre Atividade e FragmentActivity

228

Eu estava trabalhando em fragmentos e me deparei com duas coisas Activitye FragmentActivityque são usadas várias vezes. Quero saber que existe alguma diferença entre esses dois, porque quando mudei Activitycom FragmentActivityele não teve efeito no aplicativo.

Novato
fonte

Respostas:

316

A FragmentActivityé uma subclasse Activitycriada para o Pacote de suporte do Android .

A FragmentActivityclasse adiciona alguns métodos novos para garantir a compatibilidade com versões mais antigas do Android, mas fora isso, não há muita diferença entre os dois. Apenas certifique-se de alterar todas as chamadas para getLoaderManager()e getFragmentManager()para getSupportLoaderManager()e getSupportFragmentManager()respectivamente.

Alex Lockwood
fonte
4
Ei, eu não alterei as chamadas para getSupportLoaderManager () e getSupportFragmentManager () .. mas ainda está funcionando bem.
Novato
31
É isso que o torna tão perigoso: P. FragmentActivityherda os métodos getLoaderManagere getFragmentManagerde Activitye, como resultado, o compilador não irá reclamar. Provavelmente, você está importando as classes LoaderManagere incorretas FragmentManagertambém. Verifique se você está importando essas classes do pacote de suporte ( android.support.v4.app), não do Android SDK ( android.app).
Alex Lockwood
1
Podemos dizer que, se queremos usar fragmentos para a versão 2.x do Android, precisamos usar FragmentActivity nad para versões que suportam fragmentos, precisamos usar Activity.
Novato
55
Eu acho que o que você está dizendo está correto. Mas apenas para ser 100% claro ... use Activityse estiver usando android.app.Fragment; use FragmentActivityse você estiver usando android.support.v4.app.Fragment. Nunca anexe a android.support.v4.app.Fragmenta a android.app.Activity, pois isso causará uma exceção.
Alex Lockwood
13
Primeiro tente este tutorial (como usar Fragmentsem um aplicativo). Em seguida, continue neste tutorial (como usar os Fragments do pacote de suporte). Também vale a pena ler a documentação no site dos desenvolvedores.
Alex Lockwood
4

FragmentActivityfaz parte da biblioteca de suporte , enquanto Activityé a classe padrão da estrutura. Eles são funcionalmente equivalentes.

Você sempre deve usar FragmentActivitye, em android.support.v4.app.Fragmentvez do padrão da plataforma Activitye android.app.Fragmentclasses. O uso dos padrões da plataforma significa que você depende de qualquer implementação de fragmentos usada no dispositivo em que está executando. Geralmente, eles têm vários anos e contêm bugs que foram corrigidos na biblioteca de suporte.

Samuel Peter
fonte
1
Nota: minSdkVersionda biblioteca de suporte é 14 desde a versão 26.xx
Eugen Pechanec 01/10/19