Mostrar/Ocultar Fragmento en lugar de reemplazar.
Tengo 3 o más fragmentos y quiero acceder a ellos con el cajón.
Así que cuando haga clic en “Perfil”, el fragmento actual (es decir, Home) debería ocultarse y el fragmento “Perfil” debería mostrarse y viceversa…
En este momento funciona con “reemplazar fragmento”, pero en lugar de reemplazarlo, quiero mostrarlos/ocultarlos cuando hago clic en el botón del cajón.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//mi código
reemplazarFragmento(new HomeFragment());
init();
}
private void init() {
mDrawer = (FlowingDrawer) findViewById(R.id.drawerlayout);
iv_Menu = findViewById(R.id.iv_Menu);
ll_Home = findViewById(R.id.ll_Home);
ll_Profile = findViewById(R.id.ll_Profile);
ll_Setting = findViewById(R.id.ll_Setting);
ll_Share = findViewById(R.id.ll_Share);
ll_Logout = findViewById(R.id.ll_Logout);
iv_Menu.setOnClickListener(this);
ll_Home.setOnClickListener(this);
ll_Profile.setOnClickListener(this);
ll_Setting.setOnClickListener(this);
ll_Share.setOnClickListener(this);
ll_Logout.setOnClickListener(this);
}
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.iv_Menu:
mDrawer.openMenu(true);
break;
case R.id.ll_Home:
mostrarFragmento(ll_Home);
mDrawer.closeMenu(true);
break;
case R.id.ll_Profile:
mostrarFragmento(ll_Profile);
mDrawer.closeMenu(true);
break;
case R.id.ll_Setting:
startActivity(new Intent(this, SimplPreach.class));
mDrawer.closeMenu(true);
break;
case R.id.ll_Share:
Toast.makeText(this, "Compartir.", Toast.LENGTH_SHORT).show();
mDrawer.closeMenu(true);
break;
case R.id.ll_Logout:
Toast.makeText(this, "Cerrar sesión.", Toast.LENGTH_SHORT).show();
mDrawer.closeMenu(true);
break;
}
}
private void reemplazarFragmento(Fragment fragmento, String s) {
FragmentTransaction transacción = getSupportFragmentManager().beginTransaction();
transacción.replace(R.id.fl_Main,fragmento);
transacción.addToBackStack(s);
transacción.commit();
}
private void reemplazarFragmento(Fragment fragmento) {
FragmentTransaction transacción = getSupportFragmentManager().beginTransaction();
transacción.replace(R.id.fl_Main,fragmento);
transacción.commit();
}
private void mostrarFragmento(View view) {
Fragment fragmento;
switch (view.getId()) {
case R.id.ll_Home:
fragmento = new HomeFragment();
break;
case R.id.ll_Profile:
fragmento = new ProfileFragment();
break;
default:
fragmento = new HomeFragment();
break;
}
FragmentTransaction transacción = getSupportFragmentManager().beginTransaction();
transacción.replace(R.id.fl_Main, fragmento);
transacción.commit();
}
davy.ai
Para mostrar/ocultar fragmentos en lugar de reemplazarlos al hacer clic en el botón del cajón, puede utilizar los métodos de clase FragmentManager y FragmentTransaction para manejar la visibilidad de cada fragmento. Aquí hay un ejemplo de implementación:
Note que estamos usando el parámetro tag para identificar de forma única cada fragmento al crearlos y encontrarlos. Además, en lugar de utilizar replace(), ahora estamos utilizando los métodos hide() y show() para cambiar la visibilidad de cada fragmento.