Junior
Como implementar fragmentos numa Activity?
sobes.tech IA
Resposta da IA
Nos fragmentos de Activity podem ser implementados de forma declarativa em XML ou programaticamente usando FragmentManager.
De forma declarativa (em XML):
<fragment
android:id="@+id/my_fragment"
android:name="com.example.MyFragment" // Nome completo da classe do fragmento
android:layout_width="match_parent"
android:layout_height="match_parent" />
- O fragmento é adicionado ao criar a Activity.
- Fácil de usar para layouts estáticos.
- Menos flexível para operações dinâmicas.
Programaticamente (com FragmentManager):
// Dentro de um método da Activity, por exemplo, onCreate ou em um evento
val fragmentManager = supportFragmentManager // Para AppCompatActivity
val fragmentTransaction = fragmentManager.beginTransaction()
// Adicionar um fragmento
val myFragment = MyFragment()
fragmentTransaction.add(R.id.fragment_container, myFragment)
// Substituir um fragmento (remove o existente no contêiner e adiciona um novo)
// val newFragment = NewFragment()
// fragmentTransaction.replace(R.id.fragment_container, newFragment)
// Remover um fragmento
// val fragmentToRemove = fragmentManager.findFragmentById(R.id.fragment_container)
// if (fragmentToRemove != null) {
// fragmentTransaction.remove(fragmentToRemove)
// }
// Adicionar à pilha de navegação (permite voltar ao fragmento anterior com o botão "Voltar")
fragmentTransaction.addToBackStack(null) // String de etiqueta para a pilha de navegação (pode ser null)
// Finalizar a transação
fragmentTransaction.commit() // Execução assíncrona
// ou
// fragmentTransaction.commitNow() // Execução síncrona
- Usa
FragmentManagerpara gerenciar os fragmentos. FragmentTransactioné usado para realizar operações (adicionar, remover, substituir, etc.).- Oferece maior flexibilidade para alterar dinamicamente a UI em tempo de execução.
- Pode gerenciar a pilha de navegação para navegação.
Uso do contêiner:
Para adicionar ou substituir fragmentos programaticamente, geralmente usa-se um contêiner no layout XML da Activity, como FrameLayout ou LinearLayout:
<FrameLayout
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
Depois, no código da Activity, o fragmento é adicionado ou substituído dentro desse contêiner.
Aspectos importantes:
- O ciclo de vida do fragmento está estreitamente relacionado ao ciclo de vida da Activity.
- O
FragmentManagergerencia o ciclo de vida e o estado dos fragmentos. - A transação de fragmentos é realizada de forma atômica (ou toda a operação ou nenhuma).
- Ao usar a pilha de navegação, é necessário chamar
addToBackStack(). - Para trabalhar com fragmentos no AppCompatActivity, use
supportFragmentManager.