Sto provando a usare il frammento, ViewPager & co. dalla libreria di supporto Android v4. I frammenti sembrano scorrere quando ascolto eventi di cambio pagina dal cercapersone ma il contenuto non è visibile. Quello che in fondo ho è:ViewPager con FragmentPagerAdapter non mostra il contenuto
A 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) {
}
A 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);
}
}
E tre frammenti che assomigliano a questo:
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);
}
}
E hanno il layout come questi:
<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>
Originariamente ho dimenticato di aggiungere il layout principale, qui si tratta:
<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>
sarei grato se qualcuno mi può dire quello che sto facendo male.
si potrebbe fornire il layout che contiene il viewpager? Hai messo un punto di interruzione in getItem() solo per assicurarti che funzioni? Inoltre, imposta il textcolor su bianco in quelle visualizzazioni di testo solo per essere sicuro! –
oh sì, l'ho aggiunto ora. – rgngl
Il tuo viewpager ha l'altezza impostata per avvolgere il contenuto, e le pagine hanno l'altezza impostata per riempire il genitore - questo non ha senso e probabilmente significa che le tue pagine non occupano spazio. Sospetto che tu voglia che anche il viewpager abbia un'altezza di fill_parent. –