我有一个主要的活动,XML包含RelativeLayout
ViewPager
:
<android.support.v4.view.ViewPager
android:id="@+id/pager"
然后我有FragmentStatePagerAdapter
来管理Fragment
。
现在我在名为Fragment
的{{1}}上有一个公共方法(显然会返回foo)。
问题:从主要活动中获取getFoo()
的{{1}}的正确方法是什么?
我尝试在Fragment
上使用foo
,但后来我无法获得addOnPageChangeListener()
的有效实例。
答案 0 :(得分:2)
您可以扩展FragmentStatePagerAdapter
,就像拥有自己的ArrayAdapter
一样。
在其中保留List<Fragment>
(通过构造函数),然后使用adapter.getItem(position).getFoo()
非常简单的例子。
public MyFragmentStatePagerAdapter extends FragmentStatePagerAdapter {
private List<Fragment> fragments;
public MyFragmentStatePagerAdapter(FragmentManager fm, List<Fragment> fragments) {
super(fm);
this.fragments = fragments;
}
public int getCount() { return fragments.size(); }
public Fragment getItem(int position) { return fragments.get(position); }
}