Combinacion de Fragmentos
Vamos a crear un actividad formada por 2 fragmentos, ocupando cada uno la mitad de la pantalla
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.frag2,container,false);
return rootView;
}
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.
Al clickear sobre cada fragmento vamos a marcar como seleccionado el que tocamos y como no seleccionado el otro
@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");
}
}
@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);
}
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.
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