Reemplazar un fragmento programáticamente

Tengo tres fragmentos como se muestra en la figura de abajo. He agregado todos estos tres fragmentos en LinearLayout usando el archivo .xml y cuando mi actividad de inicio se inicia, carga ese diseño .xml usando setContentView.

Tengo algunos controles en fragmento2. Al hacer clic en cualquiera, se carga el fragmento4 mediante programación utilizando FragmentTransaction y el método commit. Estos fragmentos se agregan a la pantalla, pero el problema es que el fragmento agregado prgrammáticamente toma toda el área de la pantalla. ¿Cual puede ser el problema?

Nota: en cualquier elemento, haga clic en f2 quiero reemplazar solo f2 con el nuevo fragmento f4. Tenga en cuenta que agregué f1, f2, f3 a través del archivo de diseño xml y agregué nuevo fragmento f4 programáticamente.

Respuestas a la pregunta(2)

Su respuesta a la pregunta