ViewPager no desliza con FragmentPagerAdapter
Tengo dos fragmentos en una actividad, en el modo de retrato el primero (ListFragment) se muestra cuando el usuario hace clic en algún lugar en ListView el segundo se muestra, mientras que en modo horizontal ambos fragmentos se muestran. Sin embargo quiero usar la función de deslizar mientras está en el modo de retrato y que debe mostrar el siguiente fragmento como este ejemplo ,
Esta es mi principal actividad laucher que extiende FragmentActivity,
- Crear sombra para el diálogo
- Keyevent para hacer clic en Alert Dialog de la pantalla de Android
- Android - ScrollView como foursquare con mapas + lista
- ¿Cualquier forma más rápida de volcar la jerarquía de la interfaz de usuario?
- Cómo crear Android La vista de cuadrícula de Google Play como Widget con imágenes de diferentes tamaños cargadas dinámicamente
package com.myexample.fragmentdemoexample; import java.util.LinkedList; import java.util.List; import java.util.Vector; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.app.ListFragment; import android.support.v4.view.ViewPager; import android.util.Log; import android.view.ViewGroup; public class MainFragmentActivity extends FragmentActivity { private static int NUM_ITEMS = 4; MyAdapter mAdapter; ViewPager mPager; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mPager = (ViewPager) findViewById(R.id.pager); instantiateFragments(); Log.i("MainFragmentActivity", "MainFragmentActivity is Created"); } public void instantiateFragments() { List<Fragment> fragments = new Vector<Fragment>(); fragments.add(Fragment.instantiate(this, MyListFragment.class.getName())); fragments.add(Fragment.instantiate(this, DetailFragment.class.getName())); mAdapter = new MyAdapter(getSupportFragmentManager(), fragments); mPager.setAdapter(mAdapter); mPager.setCurrentItem(0); } public class MyAdapter extends FragmentPagerAdapter { private FragmentManager frmanager; private List<Fragment> fragments; public MyAdapter(FragmentManager fm, List<Fragment> fragList) { super(fm); frmanager = fm; fragments = fragList; } @Override public int getCount() { return NUM_ITEMS; } @Override public Fragment getItem(int position) { return fragments.get(position); } } }
Este es mi archivo layout / main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > <android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/pager" android:layout_width="match_parent" android:layout_height="0px" android:layout_weight="1" > </android.support.v4.view.ViewPager> <fragment android:id="@+id/listFragment" android:layout_width="150dip" android:layout_height="match_parent" class="com.myexample.fragmentdemoexample.MyListFragment" android:tag="listFragment" > </fragment> <fragment android:id="@+id/detailFragment" android:layout_width="match_parent" android:layout_height="match_parent" class="com.myexample.fragmentdemoexample.DetailFragment" android:tag="detailFragment" > <!-- Preview: layout=@layout/details --> </fragment> </LinearLayout>
Y /layout-port/main.xml contiene
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="horizontal" > <android.support.v4.view.ViewPager android:id="@+id/pager" android:layout_width="match_parent" android:layout_height="0px" android:layout_weight="1" > </android.support.v4.view.ViewPager> <fragment android:id="@+id/listFragment" android:layout_width="match_parent" android:layout_height="match_parent" class="com.myexample.fragmentdemoexample.MyListFragment" /> </LinearLayout>
No sé por qué View Pager no está pasando al siguiente fragmento … ¿Cómo puedo hacer eso? Estoy utilizando Fragment API por primera vez .. así que por favor dar algunos punteros a la dirección correcta.
NOTA Para otros archivos vea esta pregunta
- Android: mantiene varias instancias de una actividad en la pila posterior
- El fondo de pantalla de Android también se desliza hacia la izquierda y la derecha cuando desliza la pantalla de inicio
- Diferencia entre MotionEvent.getRawX y MotionEvent.getX
- Android Night Mode sin CarModeEnabled
- Construir Reproducir Interfaz similar a la música
- TransitionDrawable: invierte automáticamente la transición una vez que completa
- Ver contenido a continuación ExpandableListView
- Imagen animada recortada
Finalmente después de horas de harasment el problema fue solucionado quitando las etiquetas del fragmento del archivo principal de la disposición. Ahora main.xml contiene
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > <android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/pager" android:layout_width="match_parent" android:layout_height="0px" android:layout_weight="1" > </android.support.v4.view.ViewPager> </LinearLayout>
Esto podría ser útil para otros con problemas similares …
A pesar de que no responde a la pregunta directamente, pero tiene respuesta sobre un problema similar que he enfrentado. Puede ser que va a ayudar a otros que tienen problemas similares.
Si tienes un diseño como
<AppBarLayout> <ToolBar /> <TabLayout /> <ViewPager /> </AppBarLayout>
El error aquí es ViewPager
no debe estar dentro de AppBarLayout
. Así que cambie su código a:
<AppBarLayout> <ToolBar /> <TabLayout /> </AppBarLayout> <ViewPager />
- Obtención de la ubicación actual de un dispositivo mediante la función {X} api
- Creación de un ejecutable android ffmpeg