UneXp
he implementado Vista de navegación inferior y no tengo idea de cómo establecer el índice de selección o MenuItem
id (en mi caso, el elemento intermedio debe seleccionarse de forma predeterminada).
Me temo que no existe tal posibilidad por ahora, ya que todavía está demasiado crudo, pero de todos modos, cualquier ayuda será apreciada. ¡Gracias!
Establezca el ID del elemento de menú seleccionado usando setSelectedItemId
:
bottomNavigationView.setSelectedItemId(R.id.item_id);
Este método comenzó a estar disponible en la Biblioteca de soporte de Android 25.3.0.
-
O use la sintaxis de acceso a la propiedad en Kotlin:
bottomNavigationView.selectedItemId = R.id.item_id
– joseluisq
23 de agosto a las 20:46
UneXp
La única solución que funcionó para mí es:
View view = bottomNavigationView.findViewById(R.id.menu_action_dashboard);
view.performClick();
Simplemente haciendo clic hace el truco. Espero que obtengamos métodos/propiedades adicionales en futuras versiones.
UPD:
Como mencionó el usuario 5968678, se agregó un nuevo método desde la Biblioteca de soporte de Android v25.3.0:
bottomNavigationView.setSelectedItemId(R.id.item_id);
así que usa esto en su lugar 🙂
-
La mejor solución todavía
– Hombre malo
13 de diciembre de 2016 a las 21:54
Creo que esta solución puede ser un poco más elegante que la respuesta aceptada:
bottomNavigationView.getMenu().getItem(menuItemIndex).setChecked(true)
donde menuItemIndex es el índice del elemento seleccionado.
-
No funciona. Si tiene la animación habilitada en su bottomNavigationBar, puede ver que el color ha cambiado en el elemento seleccionado, pero la animación aún está en el primer elemento del menú. No disponible por ahora en la biblioteca de Android. SI DESEA HACER QUE FUNCIONE DE TODOS MODOS: ((BottomNavigationMenuView) bottomNavigationView.getChildAt(0)).getChildAt(menuItemIndex).performClick(); O AÚN MEJOR: ((BottomNavigationMenuView) bottomNavigationView.getChildAt(0)).findViewById(R.id.id_menu_action).performClick();
– Anne-Claire
30 de enero de 2017 a las 16:43
-
¿Puedes publicar tu código? Estoy usando el último BottomNavigationView de la biblioteca de soporte de Google (25.1.0) y cuando cambio el índice seleccionado, la animación funciona sin problemas.
– Jan Slominsky
31 de enero de 2017 a las 9:30
-
esto solo activará el menú, pero no activará el menú en sí, que es lo que estoy buscando
– Irfandi D. Vendy
23 de julio de 2019 a las 16:54
arekolek
Esto es lo que la documentación dice al respecto:
Los elementos del menú también se pueden usar para seleccionar mediante programación qué destino está actualmente activo. Se puede hacer usando
MenuItem#setChecked(true)
Como alternativa a lo que publicó Jan, también puede encontrar el artículo por id:
Menu menu = findViewById(R.id.navigation).getMenu();
menu.findItem(R.id.navigation_home).setChecked(true);
Además, en general, puedo recomendar llamar .callOnClick()
en vez de .performClick()
.
Si está utilizando un oyente, como la implementación predeterminada en el estudio de Android, intente esto:
BottomNavigationView navigation = (BottomNavigationView) findViewById(R.id.navigation);
Integer indexItem = 4;
navigation.getMenu().getItem(indexItem).setChecked(true);
mOnNavigationItemSelectedListener.onNavigationItemSelected(navigation.getMenu().getItem(indexItem));
Mbanda
Creo que la pregunta en este contexto se está viendo en diferentes contextos según las respuestas aquí. De acuerdo con la evaluación, lo que se requiere es la capacidad de concentrarse en BottomNavigationView
elemento (definitivamente en una nueva clase que contiene diferentes fragmentos).
Ahora, puede hacer clic en BottomNavigationView OR Buttons o Anything para iniciar una nueva actividad en la intención: –
es decir
Intent intent = new Intent(getActivity(), New_Activity.class);
intent.putExtra("EXTRA_PAGE, 1);
startActivityForResult(intent, 30);
Después
-en nuestra New_Activity, recibimos la intención-
Intención intención = getIntent(); página int = intent.getExtras().getInt(“EXTRA_PAGE);
Luego recorremos la variable de página para encontrar el número/índice para el cual se refleja el BottomNavigationView actual, ENTONCES configuramos nuestro elemento de menú de enfoque (asumiendo que su BottomNavigationView tiene elemento de menú para su visualización)
if(page == 1) {
currentselect = new Pending();
bottomNavigationView.getMenu().getItem(0).setChecked(true);
}
Esto responde a la pregunta anterior. El resto del cambio de Fragmento se maneja bien por la cantidad de publicaciones anteriores al invocar:
bottomNavigationView.setOnNavigationItemSelectedListener(navListener);
Entonces algo como:
private BottomNavigationView.OnNavigationItemSelectedListener navListener =
new BottomNavigationView.OnNavigationItemSelectedListener(){
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
Fragment selectedFrag = null;
switch (item.getItemId()) {
case R.id.pending:
selectedFrag = new Pending();
break;
case R.id.onTransmit:
selectedFrag = new inTransmit();
break;
case R.id.complete:
selectedFrag = new Complete();
break;
}
getSupportFragmentManager().beginTransaction().replace(R.id.select_field, selectedFrag).commit();
return true;
}
};
NOTA:
Usando Vista de navegación inferior y ContentFrameLayoutContentFrameLayout es tan económico y reducirá su código a más del 50 % a diferencia de usar gustos de Ver paginador y Tablayout
Hamed Jaliliani
Código Kotlin para el elemento seleccionado inicial en bottomnavigation.BottomNavigationView:
bottom_navigation_view.selectedItemId = R.id.navigation_item_messages
Consulte este enlace. androidgifts.com/…
– Jigar Shej
25 de octubre de 2016 a las 9:58
si lo se Barra inferior pero no puedo creer que support.design’s one no tenga la posibilidad de seleccionar elementos mediante programación 🙂 Tal vez algunas soluciones pirateadas …
– UneXp
25 de octubre de 2016 a las 10:06
Mira esta respuesta. Esta es la mejor solución.
– Volodymyr Yatsykiv
13 dic 2016 a las 14:50
Se agregó una respuesta más “elegante”, puede verificar esa.
– Jan Slominsky
14 de enero de 2017 a las 18:08