¿Cómo hacer que la navegación inferior se seleccione automáticamente al moverse de un fragmento a otro?
Estoy intentando crear un botón de acción que mueva de la pestaña de inicio a la pestaña de promociones.
En la pestaña de inicio hay un botón de acción que llevará a la pestaña de promociones. Sin embargo, cuando se hace clic en el botón de acción de promociones en la pestaña de inicio, la visualización se desplaza a la pestaña de promociones pero la navegación inferior sigue seleccionada en la pestaña de inicio.
Captura de pantalla de la pestaña de inicio:
Screenshot Home Fragment
Captura de pantalla de la pestaña de promociones:
Screenshot Promo Fragment
Este es mi código de botón de acción en la pestaña de inicio:
imagePromo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
((MainActivity)getActivity()).selectFragment(2);
}
});
Este es mi código de selectfragment en MainActivity:
public void selectFragment(int position){
viewPager.setCurrentItem(position, true);
viewPager.dispatchSetSelected(true);
}
Este es mi código de navegación inferior en MainActivity:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
view = findViewById(android.R.id.content);
viewPager = findViewById(R.id.viewpager);
viewPager.setAdapter(new MyAdapter(getSupportFragmentManager()));
viewPager.setOffscreenPageLimit(pager_number);
navigation = findViewById(R.id.navigation);
navigation.setOnNavigationItemSelectedListener(item -> {
switch (item.getItemId()) {
case R.id.navigation_home:
viewPager.setCurrentItem(0);
return true;
case R.id.navigation_category:
viewPager.setCurrentItem(1);
return true;
case R.id.navigation_promo:
viewPager.setCurrentItem(2);
return true;
case R.id.navigation_wishlist:
viewPager.setCurrentItem(3);
return true;
}
return false;
});
}
davy.ai
Para asegurarte de que la vista de navegación inferior se actualice cuando se hace clic en el botón de acción en el fragmento de inicio y se mueve al fragmento de promoción, necesitas actualizar manualmente el elemento seleccionado en la vista de navegación inferior. Para lograr esto, llama al método
setChecked()
en el elemento de menú correspondiente en el métodosetOnNavigationItemSelectedListener()
de MainActivity.Aquí está el código actualizado:
En el fragmento home:
En MainActivity:
Al llamar a
setChecked(true)
en el elemento de menú seleccionado, se destacará en la vista de navegación inferior cuando el usuario navegue hacia el fragmento de promoción utilizando el botón de acción en el fragmento de inicio.