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

Made with Slides.com