CLASE 01
Combinacion de Fragmentos
Fragmento como parte de la pantalla
Vamos a crear un actividad formada por 2 fragmentos, ocupando cada uno la mitad de la pantalla
- Crear el Layout para cada Fragmento
- Crear la clase para cada Fragmento
- Incorporarlos a la actividad principal
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.frag2,container,false);
return rootView;
}
Ciclo de Vida

onCreate: Podemos realizar acciones que no intervengan con la parte visual.
onCreateView: Ya podemos realizar inicializaciones visuales.
onActivityCreated: Llamado luego de que se crea la actividad, es decir al finalizar el onCreate de la Activity. Se usa para las incializaciones visuales, finales.
Comunicacion
Activity - Fragment
Al clickear sobre cada fragmento vamos a marcar como seleccionado el que tocamos y como no seleccionado el otro
- Implementar onActivityCreated
- Crear metodo que indique seleccion/no-seleccion
- Obtener referencia a los fragmentos
Comunicacion
Activity - Fragment
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
getView().setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
((MainActivity)getActivity()).clickFragmento2();
}
});
}
public void fragmentoSeleccionado(boolean state){
if (state){
tv.setText("Seleccionado");
}else{
tv.setText("No Seleccionado");
}
}
Comunicacion
Activity - Fragment
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
f1 = (Fragmento1) getSupportFragmentManager().findFragmentById(R.id.fragmento1);
f2 = (Fragmento2) getSupportFragmentManager().findFragmentById(R.id.fragmento2);
}
public void clickFragmento1(){
f1.fragmentoSeleccionado(true);
f2.fragmentoSeleccionado(false);
}
public void clickFragmento2(){
f1.fragmentoSeleccionado(false);
f2.fragmentoSeleccionado(true);
}
FLUJO
MASTER/DETAIL
Adaptación Pantallas

Master/Detail
Realizar todo el tratamiento de manera particular, sería muy complejo y podriamos incorporar bugs, ademas del tiempo que nos lleve desarrollarlo. Por suerte, contamos con un Wizard para crear este tipo de actividades de manera automática y muy sencilla optimizando todo los recursos antes mencionados.
Lo que es importante es reconocer la forma en la que funciona.
Master/Detail
ALIAS
Lo que usa para determinar si debe crear una activity con 2 fragmentos (tablets) o 1 fragmento (telefono) es un alias de layout, definido en una referencia de "tamaño".
Crea un recurso para pantallas con un ancho mayor a 900dips (values-w900dp)
Y en ella le dice que lo que antes era peliculas_list.xml ahora sea el peliculas_list_twopane.
Luego, al clickear un item de la lista (PeliculasListActivity) determina si debe iniciar una nueva actividad o actuaizar un fragment
Gracias!
No dejen de consultar cualquier duda que surja
sebasira@gmail.com
Android Avanzando - Clase 01
By Ing. Sebastian M. Irazabal
Android Avanzando - Clase 01
- 618