You are on page 1of 6

HOLA, EN ESTE PEQUEÑO TUTORIAL APRENDEREMOS A PASAR DE UN FRAGMENT A OTRO USANDO

EN DRAWER ACTIVITY, TAMBIEN DESDE UN ACTIVITY “C” A UN FRAGMENT “b” DEL DRAWER
ACTIVITY.

IMPORTANTE: ASUMIENTO QUE YA TIENES TUS FRAGMENTS VINCULADOS AL MENU DE TU


DRAWER ACTIVITY HAREMOS LO SIGUIENTE,

1. MOSTRAR EL FRAGMENT PRINCIPAL AL CARGAR EL MAIN ACTIVITY (DRAWER ACTIVITY)

En mi caso yo uso una clase llamada Config en el cual declaro variables estática para poder
cambiarlas de valor según en el fragmente o actividad que me encuentro.

El código seria asi:


public class Config {


public static int SELECT_NAV = 0;
public static boolean OP_MENU=false;


}

- En la variable SELECT_NAV guardaré el id menú al cual quiero que me muestre del


drawer activity, ESTE TAMBIEN ME AYUDARA A SELECCCIONAR LA OPCION DEL MENU
DEL DRAWER ACTIVITY
- La variable OP_MENU, me indicará si estoy cargando por primera vez el drawer activity
( no se si sea necesario, pero igual lo deje ahí. Jajaja)
EN EL MAIN_ACTIVITY (DRAWER ACTIVITY)

En el metoro onCreate:

if(!Config.OP_MENU) {

navigationView.setCheckedItem(R.id.navTienda);
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction().replace(R.id.contenedorMain, new
TiendaFragment()).commit();
}
else{
navigationView.setCheckedItem(Config.SELECT_NAV);
displayView(Config.SELECT_NAV);
}

como podras ver: he creaedo un metoro displayView que paso como parametron el id del menu
que quiero mostrar.

public void displayView(int id) {

FragmentManager fragmentManager = getSupportFragmentManager();

if (id == R.id.navTienda) {
setTitle("Tienda");
fragmentManager.beginTransaction().replace(R.id.contenedorMain,
new TiendaFragment()).commit();
} else if (id == R.id.navBuscar) {
setTitle("Buscar en la Tienda");
fragmentManager.beginTransaction().replace(R.id.contenedorMain,
new BuscarFragment()).commit();
} else if (id == R.id.navNotificacion) {
setTitle("Notificaciones");
fragmentManager.beginTransaction().replace(R.id.contenedorMain,
new NotificacionesFragment()).commit();
} else if (id == R.id.navCarrito) {
setTitle("Carrito de Pedidos");
fragmentManager.beginTransaction().replace(R.id.contenedorMain,
new CarritoFragment()).commit();
} else if (id == R.id.navCompartir) {
setTitle("Compartir");
fragmentManager.beginTransaction().replace(R.id.contenedorMain,
new TiendaFragment()).commit();
} else if (id == R.id.navServicio) {
setTitle("Servicios de Asistencia");
fragmentManager.beginTransaction().replace(R.id.contenedorMain,
new TiendaFragment()).commit();
} else if (id == R.id.navAcerca) {
setTitle("Acerca del App");
fragmentManager.beginTransaction().replace(R.id.contenedorMain,
new TiendaFragment()).commit();
} else if (id == R.id.navProveedor) {
setTitle("¡Quiero un mi app!");
fragmentManager.beginTransaction().replace(R.id.contenedorMain,
new TiendaFragment()).commit();
}

DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);


drawer.closeDrawer(GravityCompat.START);

AHORA DEBES CAMBIAR TU METODO onNavigationItemSelected, ASI:


@Override
public boolean onNavigationItemSelected(MenuItem item) {
// Handle navigation view item clicks here.

displayView(item.getItemId());

return true;
}

HASTA AQUÍ LO QUE CONSEGUIMOS ES CARGAR EL FRAGMENT PRINCIPAL, Y NAVEGAR


DIRECTMENTE CON NUESTRO MENU LATERAL DEL DRAWER ACTIVITY.

AHORA, VEREMOS COMO PASAR DE UNA FRAGMENT A OTRO, EL TRUCO ES LLAMAR O


“RECARGAR” CON UN INTENT AL MAIN ACTIVITY DESDE EL FRAGMENT, PERO USANDO LAS
VARIABLES STATICAS DE LA CLASE CONFIG:
public static int SELECT_NAV = 0;
public static boolean OP_MENU=false;

EN MI PROYECTO, ESTE CODIGO LO USO CUANDO PRESIONA EL BOTON “VOLVER A TIENDA” DEL
DISPOSITIVO, PERO TU PUEDES USARLO AL PRESIONAR EL BOTON QUE DESEES.

Estos son mis fragments:

Siendo TiendaFragment mi fragment principal:

Este código lo he puesto en mi fragmente “CarritoFragment”:


Primero implementamos el evento View.OnClickListener
Asi:
public class CarritoFragment extends Fragment implements
View.OnClickListener {

//creamos la variable para el boton


Button btTienda;

//en el evento oncreateview


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment

View fragment= inflater.inflate(R.layout.fragment_carrito, conainer,


false);

btTienda = (Button) fragment.findViewById(R.id.btVolverTienda);

btTienda.setOnClickListener(this);

return fragment;
}

//en el metodo onClick


@Override
public void onClick(View view) {
if(view == btTienda){
Config.OP_MENU = true;
Config.SELECT_NAV = R.id.navTienda;
Intent intent = new Intent(getContext(),MainActivity.class);
startActivity(intent);
}

El mismo codigo se usa cuando estas en un Activity y quieres mostrar un fragment cualquiera:
Config.OP_MENU = true;
Config.SELECT_NAV = R.id.navTienda;
Intent intent = new Intent(ResultadosActivity.this, MainActivity.class);
startActivity(intent);

ESPERO TE SIRVA, SALUDOS.

You might also like