android - sectionspageradapter - ViewPager con FragmentPagerAdapter no muestra contenido
refresh viewpager android (2)
Estoy tratando de usar el Fragmento, ViewPager & co. de la biblioteca de soporte de Android v4. Los fragmentos parecen desplazarse cuando escucho eventos de cambio de página desde el paginador pero el contenido no es visible. Lo que básicamente tengo es:
Un FragmentActivity:
public class MyActivity extends FragmentActivity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
FragmentPagerAdapter fpa = new MyPagerAdapter(this, createFragments());
ViewPager vp = (ViewPager) findViewById(R.id.pager);
vp.setAdapter(fpa);
}
private List<Fragment> createFragments() {
List<Fragment> list = new ArrayList<Fragment>();
list.add(Fragment.instantiate(this, First.class.getName()));
list.add(Fragment.instantiate(this, Second.class.getName()));
list.add(Fragment.instantiate(this, Third.class.getName()));
return list;
}
@Override
protected void onSaveInstanceState(Bundle outState) {
}
Un FragmentPagerAdapter:
public class MyPagerAdapter extends FragmentPagerAdapter {
private List<Fragment> fragments;
public MyPagerAdapter(FragmentActivity activity, List<Fragment> fragments) {
super(activity.getSupportFragmentManager());
this.fragments = fragments;
}
@Override
public Fragment getItem(int i) {
return fragments.get(i);
}
@Override
public int getCount() {
return fragments.size();
}
@Override
public boolean isViewFromObject(View view, Object o) {
return view.equals(o);
}
}
Y tres fragmentos que se parecen a esto:
public class First extends Fragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.first, container, false);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
}
}
Y tienen un diseño como estos:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:text="First Fragment"
android:id="@+id/firstText"/>
</LinearLayout>
Originalmente olvidé agregar el diseño principal, aquí viene:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_width="fill_parent"/>
</LinearLayout>
Apreciaría si alguien me puede decir lo que estoy haciendo mal.
Esto se debe a que ha anulado isViewFromObject
en MyPagerAdapter
.
FragmentPagerAdapter
maneja isViewFromObject
, por lo que no debe anularlo.
Al igual que yo, estimo que la mayoría de los visitantes a esta publicación comenzaron con un PagerAdapter
básico, luego se dieron cuenta de que necesitaban fragmentos de página y cambiaron su clase base sin darse cuenta de las consecuencias. Desafortunadamente, pero no pude criticar al equipo de Android por esto.
Ya está correcto como lo dijo Ian Newson, simplemente elimine el método anulado de isViewFromObject de su código
@Override
public boolean isViewFromObject(View view, Object object) {
return false;
}