Minha pergunta está separada das óbvias diferenças de herança, quais são as principais diferenças entre Fragmente FragmentActivity? Para quais cenários cada classe é mais adequada? Estou tentando entender por que essas duas classes existem ...
Minha pergunta está separada das óbvias diferenças de herança, quais são as principais diferenças entre Fragmente FragmentActivity? Para quais cenários cada classe é mais adequada? Estou tentando entender por que essas duas classes existem ...
Respostas:
A Fragmenté uma seção de um Activityque possui:
Activityestiver em execução.A Fragmentdeve sempre estar incorporado em um Activity.
Fragmentsnão fazem parte da API anterior ao HoneyComb (3.0). Se você deseja usar Fragmentsem um aplicativo direcionado a uma versão da plataforma anterior ao HoneyComb, precisará adicionar o Pacote de Suporte ao seu projeto e usá-lo FragmentActivitypara manter seu Fragments. A FragmentActivityclasse possui uma API para lidar Fragments, enquanto a Activityclasse anterior ao HoneyComb não.
Se o seu projeto está direcionado apenas ao HoneyComb ou mais recente, você deve usar Activitye não FragmentActivitymanter o seu Fragments.
Alguns detalhes:
Use android.app.Fragmentcom Activity. Use android.support.v4.app.Fragmentcom FragmentActivity. Não adicione o pacote de suporte Fragmenta um, Activitypois isso causará uma exceção.
Uma coisa a ter cuidado: FragmentManagere LoaderManagerter versões de suporte separadas para FragmentActivity:
Se você estiver usando a Fragmentem um Activity(HoneyComb e superior), chame
getFragmentManager() para obter android.app.FragmentManagergetLoaderManager() para obter android.app.LoaderManagerse você estiver usando a Fragmentem um FragmentActivity(pré-HoneyComb), ligue para:
getSupportFragmentManager()para conseguir android.support.v4.app.FragmentManager.getSupportLoaderManager() para obter android.support.v4.app.LoaderManagerentão não faça
//don't do this
myFragmentActivity.getLoaderManager();
//instead do this:
myFragmentActivity.getSupportLoaderManager();
ou
//don't do this:
android.app.FragmentManager fm = myFragmentActivity.getSupportFragmentManager();
//instead do this:
android.support.v4.app.FragmentManager fm = myFragmentActivity.getSupportFragmentManager()
Também é útil saber que, embora um fragmento Activityprecise ser incorporado a um objeto, ele não precisa fazer parte do Activitylayout. Ele pode ser usado como um trabalhador invisível para a atividade, sem nenhuma interface de usuário própria.
FragmentActivity é a nossa atividade clássica com suporte a fragmentos, nada mais. Portanto, FragmentActivity é necessário, quando um Fragmento será anexado à Activity.
O Fragmento de Poço é um bom componente que copia os comportamentos básicos da Activity, ainda não um componente de aplicativo independente como Activity e precisa ser anexado à Activity para funcionar.
Veja aqui mais detalhes
Pense em FragmentActivity como uma classe Activity regular que pode oferecer suporte a Fragments. Antes do favo de mel, uma classe de atividade não podia suprimir fragmentos diretamente, portanto, isso é necessário em atividades que usam fragmentos.
Se sua distribuição de destino for Honeycomb e além, você poderá estender a atividade.
Também um fragmento deve ser considerado como uma 'subatividade'. Não pode existir sem uma atividade. Sempre pense em um fragmento como uma sub atividade e você deve ser bom. Portanto, a atividade seria o pai e o (s) fragmento (s), o tipo de relacionamento simbólico da criança.
uma FragmentActivity é uma atividade ad-hoc que contém Fragment. Nestas poucas palavras, explico uma das principais mudanças importantes que, com o Android 3.0 (HoneyComb), a equipe do Android inseriu no android sdk.
Com esse novo tipo de conceito, suas partes de código e layout se tornam mais flexíveis e sustentáveis. Se você pesquisar no google, existem muitos exemplos.