Actualizar ViewPager dinámicamente?

No puedo actualizar el contenido en ViewPager.

Una pregunta: ¿Cuál es la relación y el uso correcto de los métodos instantiateItem () y getItem () en la clase FragmentPagerAdapter?

Yo estaba usando sólo getItem () para instanciar y devolver mis fragmentos:

@Override public Fragment getItem(int position) { return new MyFragment(context, paramters); } 

Esto funcionó bien (pero como dije no puedo cambiar el contenido).

Así que encontré esto: ViewPager PagerAdapter no actualizar la vista

Particularmente uno en el que se habla del método instantiateItem ():

"Mi enfoque es usar el método setTag () para cualquier vista instanciada en el método instantiateItem ()"

Así que ahora quiero implementar instantiateItem () para hacer eso. Pero no sé qué tengo que volver allí (regreso es objeto) y cuál es la relación con getItem (int position)?

Actualmente estoy usando getItem para instanciar el fragmento, ¿está mal? Pero entonces tengo que poner los fragmentos en la variable de instancia, o no implementar getItem () en absoluto …? Simplemente no lo entiendo.

Intenté leer la referencia :

  • Public abstract Fragmento getItem (int position)

    Devuelve el Fragmento asociado a una posición especificada.

  • Public Object instantiateItem (contenedor ViewGroup, posición int)

    Cree la página para la posición dada. El adaptador es responsable de agregar la vista al contenedor dado aquí, aunque solo debe asegurar que esto se haga cuando regrese de finishUpdate (ViewGroup). Parámetros

    Contenedor La vista que contiene en la que se mostrará la página. Position La posición de la página a ser instanciada.

    Devoluciones

    Devuelve un objeto que representa la nueva página. Esto no necesita ser una vista, pero puede ser otro contenedor de la página.

… pero todavía no entiendo cómo están relacionados y lo que tengo que hacer.

Aquí está mi código. Estoy usando el paquete de soporte v4.

ViewPagerTest

 public class ViewPagerTest extends FragmentActivity { private ViewPager pager; private MyFragmentAdapter adapter; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.pager1); pager = (ViewPager)findViewById(R.id.slider); String[] data = {"page1", "page2", "page3", "page4", "page5", "page6"}; adapter = new MyFragmentAdapter(getSupportFragmentManager(), 6, this, data); pager.setAdapter(adapter); ((Button)findViewById(R.id.button)).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { reload(); } }); } private void reload() { String[] data = {"changed1", "changed2", "changed3", "changed4", "changed5", "changed6"}; //adapter = new MyFragmentAdapter(getSupportFragmentManager(), 6, this, data); adapter.setData(data); adapter.notifyDataSetChanged(); pager.invalidate(); //pager.setCurrentItem(0); } } 

MyFragmentAdapter

 class MyFragmentAdapter extends FragmentPagerAdapter { private int slideCount; private Context context; private String[] data; public MyFragmentAdapter(FragmentManager fm, int slideCount, Context context, String[] data) { super(fm); this.slideCount = slideCount; this.context = context; this.data = data; } @Override public Fragment getItem(int position) { return new MyFragment(data[position], context); } @Override public int getCount() { return slideCount; } public void setData(String[] data) { this.data = data; } @Override public int getItemPosition(Object object) { return POSITION_NONE; } } 

Mi fragmento

 public final class MyFragment extends Fragment { private String text; public MyFragment(String text, Context context) { this.text = text; } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.slide, null); ((TextView)view.findViewById(R.id.text)).setText(text); return view; } } 

Aquí también hay alguien con un problema similar, sin respuestas …

Http://www.mail-archive.com/android-developers@googlegroups.com/msg200477.html

Cuando se utiliza FragmentPagerAdapter o FragmentStatePagerAdapter, es mejor tratar exclusivamente con getItem() y no tocar instantiateItem() en absoluto. La interfaz instantiateItem()destroyItem()isViewFromObject() en PagerAdapter es una interfaz de nivel inferior que FragmentPagerAdapter utiliza para implementar la interfaz getItem() mucho más simple.

Antes de entrar en esto, debo aclarar que

Si desea cambiar los fragmentos reales que se muestran, debe evitar FragmentPagerAdapter y utilizar FragmentStatePagerAdapter.

Una versión anterior de esta respuesta cometió el error de utilizar FragmentPagerAdapter para su ejemplo – que no funcionará porque FragmentPagerAdapter nunca destruye un fragmento después de que se ha mostrado la primera vez.

No recomiendo la setTag() y findViewWithTag() proporcionada en la publicación que enlazó. Como has descubierto, usar setTag() y findViewWithTag() no funciona con fragmentos, por lo que no es una buena coincidencia.

La solución correcta es anular getItemPosition() . Cuando se llama getItemPosition() , ViewPager llama a getItemPosition() en todos los elementos de su adaptador para ver si necesitan ser movidos a una posición diferente o eliminados.

De forma predeterminada, getItemPosition() devuelve POSITION_UNCHANGED , lo que significa: "Este objeto está bien donde está, no lo destruya ni lo elimine". Devolver POSITION_NONE corrige el problema diciendo: "Este objeto ya no es un elemento que estoy mostrando, lo elimino". Por lo tanto, tiene el efecto de eliminar y volver a crear cada elemento del adaptador.

Esta es una solución completamente legítima! Esta corrección hace que notifyDataSetChanged se comporte como un adaptador normal sin reciclar la vista. Si implementas esta revisión y el rendimiento es satisfactorio, te vas a las carreras. Trabajo hecho.

Si necesita un mejor rendimiento, puede utilizar una getItemPosition() más getItemPosition() . He aquí un ejemplo para un paginador que crea fragmentos fuera de una lista de cadenas:

 ViewPager pager = /* get my ViewPager */; // assume this actually has stuff in it final ArrayList<String> titles = new ArrayList<String>(); FragmentManager fm = getSupportFragmentManager(); pager.setAdapter(new FragmentStatePagerAdapter(fm) { public int getCount() { return titles.size(); } public Fragment getItem(int position) { MyFragment fragment = new MyFragment(); fragment.setTitle(titles.get(position)); return fragment; } public int getItemPosition(Object item) { MyFragment fragment = (MyFragment)item; String title = fragment.getTitle(); int position = titles.indexOf(title); if (position >= 0) { return position; } else { return POSITION_NONE; } } }); 

Con esta implementación, sólo se mostrarán fragmentos que muestren nuevos títulos. Cualquier fragmento que muestre títulos que todavía estén en la lista se moverá a su nueva posición en la lista y los fragmentos con títulos que ya no están en la lista serán destruidos.

¿Qué pasa si el fragmento no ha sido recreado, pero necesita ser actualizado de todos modos? Las actualizaciones a un fragmento viviente son manejadas mejor por el propio fragmento. Esa es la ventaja de tener un fragmento, después de todo – es su propio controlador. Un fragmento puede agregar un oyente o un observador a otro objeto en onCreate() , y luego eliminarlo en onDestroy() , gestionando así las actualizaciones por sí mismo. No tiene que poner todo el código de actualización dentro de getItem() como lo hace en un adaptador para un ListView u otros tipos de AdapterView.

Una última cosa – sólo porque FragmentPagerAdapter no destruye un fragmento no significa que getItemPosition es completamente inútil en un FragmentPagerAdapter. Todavía puede utilizar esta devolución de llamada para reordenar los fragmentos en ViewPager. Sin embargo, nunca los eliminará completamente del FragmentManager.

En lugar de devolver POSITION_NONE de getItemPosition() y causar una recreación de vista completa, haga lo siguiente:

 //call this method to update fragments in ViewPager dynamically public void update(UpdateData xyzData) { this.updateData = xyzData; notifyDataSetChanged(); } @Override public int getItemPosition(Object object) { if (object instanceof UpdateableFragment) { ((UpdateableFragment) object).update(updateData); } //don't return POSITION_NONE, avoid fragment recreation. return super.getItemPosition(object); } 

Sus fragmentos deben implementar la interfaz UpdateableFragment :

 public class SomeFragment extends Fragment implements UpdateableFragment{ @Override public void update(UpdateData xyzData) { // this method will be called for every fragment in viewpager // so check if update is for this fragment if(forMe(xyzData)) { // do whatever you want to update your UI } } } 

Y la interfaz:

 public interface UpdateableFragment { public void update(UpdateData xyzData); } 

Su clase de datos:

 public class UpdateData { //whatever you want here } 

He encontrado este problema y finalmente lo he resuelto hoy, por lo que escribir lo que he aprendido y espero que sea útil para alguien que es nuevo en ViewPager de Android y actualizar como lo hago. Estoy utilizando FragmentStatePagerAdapter en API nivel 17 y actualmente sólo tienen 2 fragmentos. Creo que debe haber algo no correcto, por favor, corrija, gracias. Introduzca aquí la descripción de la imagen

  1. Los datos serializados deben cargarse en la memoria. Esto se puede hacer usando un CursorLoader / AsyncTask / Thread . Depende de su código. Si está utilizando un CursorLoader , se carga automáticamente ya que hay un observador de datos registrado.

  2. Después de llamar a viewpager.setAdapter(pageradapter) , viewpager.setAdapter(pageradapter) del adaptador se getCount() constantemente para crear fragmentos. Por lo tanto, si los datos se están cargando, getCount() puede devolver 0, por lo que no es necesario crear fragmentos ficticios para no mostrar los datos.

  3. Después de cargar los datos, el adaptador no creará fragmentos automáticamente ya que getCount() sigue siendo 0, por lo que podemos configurar el número de datos realmente cargado para ser devuelto por getCount() , y luego llamar al notifyDataSetChanged() del adaptador. ViewPager comienza a crear fragmentos (sólo los primeros 2 fragmentos) por los datos en la memoria. Se realiza antes de notifyDataSetChanged() . Entonces el ViewPager tiene los fragmentos que usted necesita.

  4. Si los datos de la base de datos y de la memoria se actualizan (escritura a través de) o se actualizan los datos de la memoria o se actualizan sólo los datos de la base de datos. En los dos últimos casos, si los datos no se cargan automáticamente de la base de datos a la memoria (como se mencionó anteriormente). El ViewPager y el adaptador de buscapersonas sólo tratan los datos en la memoria.

  5. Así que cuando los datos en la memoria se actualiza, sólo tenemos que llamar al adaptador notifyDataSetChanged() . Dado que el fragmento ya está creado, se onItemPosition() al adaptador antes de que notifyDataSetChanged() devuelva.No hace falta hacer getItemPosition() en getItemPosition() entonces los datos se actualizan.

Prueba destroyDrawingCache() en ViewPager después de notifyDataSetChanged() en tu código.

Para aquellos que todavía se enfrentan al mismo problema que he enfrentado antes cuando tengo viewpager con siete fragmentos. El valor por defecto para estos fragmentos para cargar el contenido en inglés desde el servicio, pero el problema aquí que quiero cambiar el idioma de settins actividad y después de terminar Actividad de configuración quiero viewpager en la actividad principal para actualizar los fragmentos para que coincida con la selección langauge del usuario y Carga el contenido árabe si el usuario elige árabe aquí lo que hice para trabajar desde la primera vez

1-usted debe utilizar vFragmentStatePagerAdapter como se mencionó anteriormente.

2-on mainActivity i reemplazó el onResume e hizo lo siguiente

 if (!(mPagerAdapter == null)) { mPagerAdapter.notifyDataSetChanged(); } 

3-i ovveride el getItemPosition () en mPagerAdapter y hacer que vuelva POSITION_NONE.

 @Override public int getItemPosition(Object object) { return POSITION_NONE; } 

Funciona como encanto

Después de horas de frustración mientras trataba de todas las soluciones anteriores para superar este problema y también probar muchas soluciones en otras preguntas similares como esta , esto y esto que todo falló conmigo para resolver este problema y para hacer el ViewPager para destruir el antiguo Fragment y llenar El pager con el nuevo Fragment s. He resuelto el problema de la siguiente manera:

1) Haga que la clase ViewPager extienda FragmentPagerAdapter siguiente manera:

  public class myPagerAdapter extends FragmentPagerAdapter { 

2) Crear un elemento para el ViewPager que almacena el title y el fragment como sigue:

 public class PagerItem { private String mTitle; private Fragment mFragment; public PagerItem(String mTitle, Fragment mFragment) { this.mTitle = mTitle; this.mFragment = mFragment; } public String getTitle() { return mTitle; } public Fragment getFragment() { return mFragment; } public void setTitle(String mTitle) { this.mTitle = mTitle; } public void setFragment(Fragment mFragment) { this.mFragment = mFragment; } } 

3) Haga que el constructor de ViewPager tome mi instancia de FragmentManager para almacenarla en mi class siguiente manera:

 private FragmentManager mFragmentManager; private ArrayList<PagerItem> mPagerItems; public MyPagerAdapter(FragmentManager fragmentManager, ArrayList<PagerItem> pagerItems) { super(fragmentManager); mFragmentManager = fragmentManager; mPagerItems = pagerItems; } 

4) Cree un método para restablecer los datos del adapter con los nuevos datos eliminando todo el fragment anterior del propio fragmentManager para que el adapter vuelva a establecer el nuevo fragment de la nueva lista de la siguiente manera:

 public void setPagerItems(ArrayList<PagerItem> pagerItems) { if (mPagerItems != null) for (int i = 0; i < mPagerItems.size(); i++) { mFragmentManager.beginTransaction().remove(mPagerItems.get(i).getFragment()).commit(); } mPagerItems = pagerItems; } 

5) Del contenedor Activity o Fragment no reinicialice el adaptador con los nuevos datos. Establezca los nuevos datos a través del método setPagerItems con los nuevos datos como sigue:

 ArrayList<PagerItem> pagerItems = new ArrayList<PagerItem>(); pagerItems.add(new PagerItem("Fragment1", new MyFragment1())); pagerItems.add(new PagerItem("Fragment2", new MyFragment2())); mPagerAdapter.setPagerItems(pagerItems); mPagerAdapter.notifyDataSetChanged(); 

Espero que ayude.

Por alguna razón ninguna de las respuestas funcionó para mí, así que tuve que anular el método restoreState sin llamar a super en mi fragmentStatePagerAdapter. Código:

 private class MyAdapter extends FragmentStatePagerAdapter { // [Rest of implementation] @Override public void restoreState(Parcelable state, ClassLoader loader) {} } 

He modificado ligeramente la solución provista por Bill Phillips para satisfacer mis necesidades

 private class PagerAdapter extends FragmentStatePagerAdapter{ Bundle oBundle; FragmentManager oFragmentManager; ArrayList<Fragment> oPooledFragments; public PagerAdapter(FragmentManager fm) { super(fm); oFragmentManager=fm; } @Override public int getItemPosition(Object object) { Fragment oFragment=(Fragment)object; oPooledFragments=new ArrayList<>(oFragmentManager.getFragments()); if(oPooledFragments.contains(oFragment)) return POSITION_NONE; else return POSITION_UNCHANGED; } } 

De modo que el getItemPosition() devuelve POSITION_NONE sólo para aquellos fragmentos que están actualmente en el FragmentManager cuando getItemPosition se llama. (Tenga en cuenta que este FragmentStatePager y el ViewPager asociado con él están contenidos en un Fragmento no en una Actividad)

Tuve un problema similar, pero no quiero confiar en las soluciones existentes (nombres de etiqueta codificados, etc.) y no podía hacer que la solución de M-WaJeEh funcionara para mí. Aquí está mi solución:

Mantengo referencias a los fragmentos creados en getItem en una matriz. Esto funciona bien siempre y cuando la actividad no se destruya debido a la configuración Cambiar o la falta de memoria o lo que sea (-> al volver a la actividad, los fragmentos volver a su último estado sin 'getItem' ser llamado de nuevo y por lo tanto, sin actualizar la matriz ).

Para evitar este problema implementé instantiateItem (ViewGroup, int) y actualizo mi matriz allí, como esto:

  @Override public Object instantiateItem(ViewGroup container, int position) { Object o = super.instantiateItem(container, position); if(o instanceof FragmentX){ myFragments[0] = (FragmentX)o; }else if(o instanceof FragmentY){ myFragments[1] = (FragmentY)o; }else if(o instanceof FragmentZ){ myFragments[2] = (FragmentZ)o; } return o; } 

Por lo tanto, por un lado estoy feliz de haber encontrado una solución que funcione para mí y quería compartirla con usted, pero también quería preguntar si alguien más intentó algo similar y si hay alguna razón por la que no debería Hazlo así Hasta ahora funciona muy bien para mí …

Si desea utilizar FragmentStatePagerAdapter, eche un vistazo a https://code.google.com/p/android/issues/detail?can=2&start=0&num=100&q=&colspec=ID%20Type%20Status%20Owner%20Summary% 20Stars & groupby = & sort = & id = 37990 . Existen problemas con FragmentStatePagerAdapter que pueden o no afectar su caso de uso.

También, el acoplamiento tiene pocas soluciones también. .few puede adaptarse a su requisito.

Utilizo la biblioteca de EventBus para actualizar el contenido del Fragment en ViewPager . La lógica es simple, al igual que el documento de EventBus cómo hacerlo . No es necesario controlar la instancia de FragmentPagerAdapter . El código está aquí:

1: Definir eventos

Defina qué mensaje es necesario actualizar.

 public class UpdateCountEvent { public final int count; public UpdateCountEvent(int count) { this.count = count; } } 

2.Prepare suscriptores

Escriba abajo el código en el fragmento que es necesario actualizar.

 @Override public void onStart() { super.onStart(); EventBus.getDefault().register(this); } @Override public void onStop() { EventBus.getDefault().unregister(this); super.onStop(); } public void onEvent(UpdateCountEvent event) {//get update message Toast.makeText(getActivity(), event.count, Toast.LENGTH_SHORT).show(); } 

3.Post eventos

Escriba el siguiente código en otra Activity u otro Fragment que necesita actualizar el parámetro

 //input update message EventBus.getDefault().post(new UpdateCountEvent(count)); 

Yo había estado intentando tantos enfoques diferentes, ninguno realmente sove mi problema. A continuación se muestra cómo resolverlo con una mezcla de soluciones proporcionadas por todos ustedes. Gracias a todos.

 class PagerAdapter extends FragmentPagerAdapter { public boolean flag_refresh=false; public PagerAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int page) { FragmentsMain f; f=new FragmentsMain(); f.page=page; return f; } @Override public int getCount() { return 4; } @Override public int getItemPosition(Object item) { int page= ((FragmentsMain)item).page; if (page == 0 && flag_refresh) { flag_refresh=false; return POSITION_NONE; } else { return super.getItemPosition(item); } } @Override public void destroyItem(View container, int position, Object object) { ((ViewPager) container).removeView((View) object); } } 

Sólo quiero actualizar la página 0 después de onResume ().

  adapter=new PagerAdapter(getSupportFragmentManager()); pager.setAdapter(adapter); @Override protected void onResume() { super.onResume(); if (adapter!=null) { adapter.flag_refresh=true; adapter.notifyDataSetChanged(); } } 

En mi FragmentsMain, hay público entero "página", que puede decirme si es la página que quiero actualizar.

 public class FragmentsMain extends Fragment { private Cursor cursor; private static Context context; public int page=-1; 

Sé que llego tarde a la fiesta. He solucionado el problema llamando a TabLayout#setupWithViewPager(myViewPager); Justo después de FragmentPagerAdapter#notifyDataSetChanged();

Esta solución no funcionará para todos, pero en mi caso, cada fragmento en mi ViewPager es una clase diferente, y sólo uno de ellos siempre existe a la vez.

Con esta limitación, esta solución es segura y debe ser segura de usar en la producción.

 private void updateFragment(Item item) { List<Fragment> fragments = getSupportFragmentManager().getFragments(); for (Fragment fragment : fragments) { if (fragment instanceof MyItemFragment && fragment.isVisible()) { ((MyItemFragment) fragment).update(item); } } } 

Si tiene varias versiones del mismo fragmento, puede utilizar esta misma estrategia para llamar a métodos sobre esos fragmentos para determinar si es el fragmento que desea actualizar.

Esto podría ser de ayuda para alguien – en mi caso al insertar una nueva página, el buscapersonas de vista estaba preguntando por la posición de un fragmento existente dos veces, pero no pidiendo la posición del nuevo elemento, causando un comportamiento incorrecto y los datos no mostrados.

  1. Copiar la fuente de FragmentStatePagerAdapter (parece que no se han actualizado en edades).

  2. Anular notifyDataSetChanged ()

     @Override public void notifyDataSetChanged() { mFragments.clear(); super.notifyDataSetChanged(); } 
  3. Agregue una comprobación de sanidad a destroyItem () para evitar accidentes:

     if (position < mFragments.size()) { mFragments.set(position, null); } 

Respuesta aceptada no es entender, por eso agregó una solución fácil. Encontrar solución de trabajo.

Apenas notifique a su adaptador , él está trabajando asombroso,

Código de referencia

  void setAdapter(int position) { PagerAdapter pagerAdapter = new PagerAdapter(getSupportFragmentManager()); viewPager.setAdapter(pagerAdapter); // when notify then set manually current position. viewPager.setCurrentItem(position); pagerAdapter.notifyDataSetChanged(); } 

Llame a este código cuando configure el adaptador y cuando desee actualizar la interfaz de usuario.

En Su fragmento, agregue este código para actualizar Use instanceof para el contexto de conversión.

 ((YourActivityName) getContext()).setAdapter(selectedTabPosition); 

Este código comparte solo ayudar a propósito que encuentran solución de trabajo, Espero que sea útil!

He pasado por todas las respuestas anteriores y un número de otros puestos, pero todavía no podía encontrar algo que funcionó para mí (con diferentes tipos de fragmentos, junto con la adición dinámica y la eliminación de pestañas). FWIW enfoque siguiente es lo que funcionó para mí (en caso de que nadie tiene los mismos problemas).

 public class MyFragmentStatePageAdapter extends FragmentStatePagerAdapter { private static final String TAB1_TITLE = "Tab 1"; private static final String TAB2_TITLE = "Tab 2"; private static final String TAB3_TITLE = "Tab 3"; private ArrayList<String> titles = new ArrayList<>(); private Map<Fragment, Integer> fragmentPositions = new HashMap<>(); public MyFragmentStatePageAdapter(FragmentManager fm) { super(fm); } public void update(boolean showTab1, boolean showTab2, boolean showTab3) { titles.clear(); if (showTab1) { titles.add(TAB1_TITLE); } if (showTab2) { titles.add(TAB2_TITLE); } if (showTab3) { titles.add(TAB3_TITLE); } notifyDataSetChanged(); } @Override public int getCount() { return titles.size(); } @Override public Fragment getItem(int position) { Fragment fragment = null; String tabName = titles.get(position); if (tabName.equals(TAB1_TITLE)) { fragment = Tab1Fragment.newInstance(); } else if (tabName.equals(TAB2_TITLE)) { fragment = Tab2Fragment.newInstance(); } else if (tabName.equals(TAB3_TITLE)) { fragment = Tab3Fragmen.newInstance(); } ((BaseFragment)fragment).setTitle(tabName); fragmentPositions.put(fragment, position); return fragment; } @Override public CharSequence getPageTitle(int position) { return titles.get(position); } @Override public int getItemPosition(Object item) { BaseFragment fragment = (BaseFragment)item; String title = fragment.getTitle(); int position = titles.indexOf(title); Integer fragmentPosition = fragmentPositions.get(item); if (fragmentPosition != null && position == fragmentPosition) { return POSITION_UNCHANGED; } else { return POSITION_NONE; } } @Override public void destroyItem(ViewGroup container, int position, Object object) { super.destroyItem(container, position, object); fragmentPositions.remove(object); } } 

He vivido el mismo problema y he buscado mucho tiempo. Cualquier respuesta dada en stackoverflow o via google no era la solución para mi problema. Mi problema era fácil. Tengo una lista, muestro esta lista con viewpager. Cuando agrego un nuevo elemento a la cabeza de la lista y refresco las novedades del viewpager cambiadas. Mi solución final fue muy fácil que cualquiera puede usar. Cuando se agrega un nuevo elemento a la lista y desea actualizar la lista. En primer lugar, establecer el adaptador de viewpager a null y luego volver a crear el adaptador y establecer i en viewpager.

 myVPager.setAdapter(null); myFragmentAdapter = new MyFragmentAdapter(getSupportFragmentManager(),newList); myVPager.setAdapter(myFragmentAdapter); 

Asegúrese de que su adaptador debe extender FragmentStatePagerAdapter

  • IllegalArgumentException: el radio debe ser> 0
  • Adición dinámica y eliminación de pestañas en TabLayout (diseño de material) android
  • ¿Cómo ir a otras pestañas haciendo clic en un botón de la pestaña actual en Android?
  • IllegalArgumentException: No se encontró ninguna vista para id para fragmento - ViewPager en ViewPager
  • ¿Es posible acceder al Fragmento actual que está siendo visualizado por un ViewPager?
  • Implementar vista como ver paginador
  • Android ViewPager: descargar las imágenes de la URL
  • ViewPager of Fragment no muestra su contenido cuando el fragmento de raíz se reemplaza de nuevo
  • Cómo crear las pestañas de la barra de herramientas con ViewPager en el diseño del material
  • FragmentStatePagerAdapter no quita fragmentos si se eliminó el fragmento padre
  • NestedScrollView dentro de ViewPager dentro de NestedScrollView: NestedScrollView Inferior que no se desplaza
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.