Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

221
Vistas
¿Cómo cambiar el fragmento con la actividad de navegación inferior?

Creé un nuevo proyecto con la "Actividad de navegación inferior":

ingrese la descripción de la imagen aquí

Este es el código generado:

 package com.aaron.waller.mrpolitik; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.design.widget.BottomNavigationView; import android.support.v7.app.AppCompatActivity; import android.view.MenuItem; import android.widget.TextView; public class MainActivity extends AppCompatActivity { private TextView mTextMessage; private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener = new BottomNavigationView.OnNavigationItemSelectedListener() { @Override public boolean onNavigationItemSelected(@NonNull MenuItem item) { switch (item.getItemId()) { case R.id.navigation_home: mTextMessage.setText(R.string.title_home); case R.id.navigation_dashboard: mTextMessage.setText(R.string.title_dashboard); case R.id.navigation_notifications: mTextMessage.setText(R.string.title_notifications); } return true; } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mTextMessage = (TextView) findViewById(R.id.message); BottomNavigationView navigation = (BottomNavigationView) findViewById(R.id.navigation); navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener); } }

¿Cómo puedo cambiar a nuevos fragmentos con la barra inferior? Por ejemplo, tengo 3 fragmentos: Fragment1 Fragment2 y Fragment3 y quiero cambiarlos con los 3 botones de la barra inferior. También quiero poder cambiar los Fragmentos deslizando mi dedo hacia la izquierda y hacia la derecha, ¿cómo puedo hacer eso?

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

La forma en que lo haría es, primero agregaría tres métodos similares a este (cada uno para un solo fragmento. Reemplace el nombre del diseño y el objeto del fragmento al fragmento apropiado al que se está cambiando):

 public void switchToFragment1() { FragmentManager manager = getSupportFragmentManager(); manager.beginTransaction().replace(R.id.your_fragment_layout_name, new Fragment1()).commit(); }

Entonces, su declaración de cambio terminaría luciendo así:

 switch (item.getItemId()) { case R.id.navigation_home: mTextMessage.setText(R.string.title_home); switchToFragment1(); break; case R.id.navigation_dashboard: mTextMessage.setText(R.string.title_dashboard); switchToFragment2(); break; case R.id.navigation_notifications: mTextMessage.setText(R.string.title_notifications); switchToFragment3(); break; }

En cuanto a cambiar los fragmentos deslizando hacia los lados, creo que necesitarías un ViewPager .

over 4 years ago · Santiago Trujillo Denunciar

0

Es bastante "sencillo".

  1. Crea tus Fragmentos. Digamos que queremos 3 fragmentos; FragmentA , FragmentB y FragmentC con FragmentA siendo el primer Fragmento que queremos en BottomNavigationView.
  2. En su Actividad, vaya al método onNavigationItemSelected y cambie el contenido a esto:

     private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener = new BottomNavigationView.OnNavigationItemSelectedListener(){ @Override public boolean onNavigationItemSelected(@NonNull MenuItem item) { switch (item.getItemId()) { case R.id.frag_a: currentFragment = new FragmentA(); ft = getSupportFragmentManager().beginTransaction(); ft.replace(R.id.content, currentFragment); ft.commit(); return true; case R.id.frag_b: currentFragment = new FragmentB(); ft = getSupportFragmentManager().beginTransaction(); ft.replace(R.id.content, currentFragment); ft.commit(); return true; case R.id.frag_c: currentFragment = new FragmentC(); ft = getSupportFragmentManager().beginTransaction(); ft.replace(R.id.content, currentFragment); ft.commit(); return true; } return false; } };
  3. En su método onCreate() , haga esto:

     @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_client_profile); ft = getSupportFragmentManager().beginTransaction(); currentFragment = new FragmentA(); ft.replace(R.id.content, currentFragment); ft.commit(); BottomNavigationView navigation = (BottomNavigationView) findViewById(R.id.navigation); navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener); }

Si no agrega FragmentA en onCreate() , la actividad estará en blanco cuando la inicie por primera vez.

Si se pregunta a qué se refiere R.id.content , es el Id del Framelayout en el diseño de su actividad. Inicialmente contiene un TextView , elimine el TextView para que se vea así:

 <FrameLayout android:id="@+id/content" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1"/>

Finalmente, ft y currentFragment se definen así:

 Fragment currentFragment = null; FragmentTransaction ft;

No estoy seguro de la elegancia, pero esto funciona.

over 4 years ago · Santiago Trujillo Denunciar

0

La mejor manera es usar un ViewPager con un FragmentPagerAdapter . Ya que cobra los fragmentos en su interior. Use setOnNavigationItemSelectedListener con BottomNavigationView para escuchar los clics del usuario. Y use viewPager.setCurrentItem(..) para moverse entre páginas.

Crear un nuevo fragmento cada vez que el usuario hace clic en un elemento en la vista de navegación inferior no es una buena solución (especialmente cuando el usuario hace clic en el elemento de la pantalla en el que se encuentra actualmente, la solución anterior creará un nuevo fragmento incluso para este caso)

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda