Tôi đang cố gắng sử dụng Fragment, ViewPager & co. từ thư viện hỗ trợ Android v4. Các đoạn dường như cuộn khi tôi nghe các sự kiện thay đổi trang từ máy nhắn tin nhưng nội dung không hiển thị. Những gì tôi về cơ bản có là:ViewPager với FragmentPagerAdapter không hiển thị nội dung
Một 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) {
}
Một 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);
}
}
Và ba mảnh vỡ mà trông như thế này:
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);
}
}
Và họ có bố trí như :
<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>
tôi ban đầu quên để thêm cách bố trí chính, ở đây nói:
<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>
tôi sẽ đánh giá cao nếu ai đó có thể cho tôi biết những gì tôi đang làm sai.
bạn có thể cung cấp cách bố trí, trong đó có các ViewPager? Bạn đã đặt một breakpoint trong getItem() chỉ để chắc chắn rằng nó bắn? Ngoài ra, hãy đặt màu văn bản thành màu trắng trên các bản xem văn bản đó để đảm bảo! –
oh yeah, đã thêm ngay bây giờ. – rgngl
Trình xem của bạn có chiều cao được đặt để bao bọc nội dung và các trang của nó được đặt chiều cao để điền vào bố cục - điều này không có ý nghĩa và có thể có nghĩa là các trang của bạn đang chiếm không gian. Tôi nghi ngờ bạn muốn người xem có chiều cao của fill_parent. –