Os fragmentos foram criados com o objetivo modularizar a parte gráfica do app. Cada uma dessas partes possui seu próprio layout, clico de vida e necessitam de uma atividade. Conforme consta na documentação oficial, Google Developers (2021), "Um fragmento representa uma parte reutilizável da IU do seu app. Um fragmento define e gerencia o próprio layout, tem o próprio ciclo de vida e pode processar os próprios eventos de entrada. Fragmentos não podem existir por conta própria" .

Referências do texto entre aspas:

Os fragmentos também possuem um ciclo de vida, sendo que o método mais relevante é o onCreateView que será chamado para criar a interface gráfica personalizada no arquivo de layout especifico do fragmento. O método retorna uma View que representa a raiz do layout do fragmento. Para a activity o fragmento será visto como mais uma view inserida em seu layout.

Métodos do ciclo de vida:

Exemplos práticos (estático):

Exemplos práticos (dinâmico):

Veja que na documentação oficial(https://developer.android.com/guide/fragments/create?hl=pt-br), que a tag para adicionar o fragmento foi atualizada para <androidx.fragment.app.FragmentContainerView>. A mesma tag pode ser usada tanto para adicionar o fragmento via XML como programaticamente. A diferença é que para adicionar via XML, deve ser usado o atributo name, passando o nome da classe java que estende a classe Fragment. Caso deseje adicionar de forma dinâmica use o atributo id.

Por exemplo: no arquivo activity_main.xml a nova tag adicionada ficaria assim:

<androidx.fragment.app.FragmentContainerView
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:id="@+id/tela" />

Na classe MainActivity, coloque o gerenciamento de fragmento no método onCreate.

protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.activity_main);
   getSupportFragmentManager().beginTransaction()
           .setReorderingAllowed(true)
           .add(R.id.tela, FragmentActivity.class,null)
           .commit();
}

Exemplos práticos (FragContentView):

Exemplo mostrando a interação do clico de vida da Activity e dos Fragments:

Exemplos práticos (Passando valor da activity para o fragmento):

Exemplos práticos (Comunicação entre Fragment e Activity):

Exemplos práticos (maneiras de trocar os fragmentos):

Exemplos práticos (lista com 4 itens e cada item é mostrado usando fragmentos):