Actualización dinámica de TabLayout sin cambiar la ficha seleccionada

Quiero implementar un asistente con la biblioteca de soporte de diseño de materiales .

Estoy utilizando ViewPager y Tablayout pero tengo un problema al agregar nuevas pestañas dinámicamente.

Primero, configuré mis widgets en el método onCreate :

 viewPager = (ViewPager) findViewById(R.id.tab_viewpager); tabLayout = (TabLayout) findViewById(R.id.tab_layout); adapter = new ViewPagerAdapter(getSupportFragmentManager()); adapter.addFrag(new DummyFragment(), "1"); adapter.addFrag(new DummyFragment(), "2"); viewPager.setAdapter(adapter); tabLayout.setupWithViewPager(viewPager); 

Entonces quiero agregar otra tarjeta, cuando se hace clic en un elemento de la lista:

 adapter.addFrag(new DummyFragment(), "3"); adapter.notifyDataSetChanged(); tabLayout.setTabsFromPagerAdapter(adapter); 

El problema es: después de agregar, la tarjeta seleccionada se restablece a la primera.

¿Cómo evitar este comportamiento?

Acaba de correr en el mismo problema, y ​​por suerte encontró una solución (no es una bonita, pero funciona):

Cuando necesite actualizar las pestañas:

 pageradapter.notifyDataSetChanged(); for (int i = 0; i < viewpager.getCount(); i++) { sectionsTabLayout.getTabAt(i).setText(sectionsViewPagerAdapter.getPageTitle(i)); } 

Esta es una pequeña modificación en el código @Kalpit. Tendrá que añadir dinámicamente esta nueva pestaña a nuestro diseño y asignar el título llamando al mismo método del adaptador que se llama por tablayout cuando se utiliza el método setupWithViewPager. Por lo tanto, he utilizado esta declaración try try para pestañas que aún no se han creado todavía Pero puede intentar asignarles algún título.

  adapter.notifyDataSetChanged(); for(int i = 0;i<adapter.getCount();i++){ try{ tablayout.getTabAt(i).setText(adapter.getPageTitle(i)); } catch(IndexOutOfBoundException e){ tablayout.addTab(tablayout.newTab().setText(adapter.getPageTitle(i)); } } 
  • ¿Cómo puedo inhabilitar todos los eventos táctiles en todos los niños de un ViewGroup?
  • Android - FAB para ocultar al navegar entre diferentes fragmentos en un viewpager
  • Reemplazar ViewPager con Fragmento - y luego volver a navegar
  • Android ViewPager obtiene la vista actual
  • Android ViewPager + Webview, ClassCastException! Necesita una vista web en un viewpager
  • Corregir la animación de un ViewPager circular
  • El evento ViewPager onPageScrolled no se llama
  • Destruye el elemento del adaptador de ViewPager después de cambiar la orientación de la pantalla
  • Android ViewPager: Actualización de fragmentos fuera de la pantalla pero en caché en ViewPager
  • Android - Obtención de contexto de un fragmento en un buscapersonas
  • Adaptador sin fin para ViewPager
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.