ViewPager с FragmentPagerAdapter не отображает содержимое

Я пытаюсь использовать Фрагмент, ViewPager & co. Из библиотеки поддержки Android v4. Фрагменты, кажется, прокручиваются, когда я слушаю события смены страницы из пейджера, но содержимое не видно. У меня в основном есть:

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) { } 

Адаптер FragmentPager:

 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); } } 

И три фрагмента, которые выглядят так:

 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); } } 

И у них есть такой макет:

 <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> 

Я изначально забыл добавить основной макет, вот он:

 <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> 

Буду признателен, если кто-нибудь скажет мне, что я делаю неправильно.

Это связано с тем, что вы переопределили isViewFromObject в MyPagerAdapter .

FragmentPagerAdapter обрабатывает isViewFromObject , поэтому вы не должны его переопределять.

Как и со мной, я считаю, что большинство посетителей этого сообщения начали с базового PagerAdapter , а затем поняли, что им нужно PagerAdapter фрагменты страницы и менять свой базовый класс, не осознавая последствий. К сожалению, я не мог критиковать команду Android за это.

Я правильно, как сказал Ян Ньюсон, просто удалите isViewFromObject, переопределив метод из вашего кода

  @Override public boolean isViewFromObject(View view, Object object) { return false; } 
Intereting Posts