从主Activity访问ViewPager Fragment的公共方法

时间:2016-12-10 08:07:08

标签: android android-fragments

我有一个主要的活动,XML包含RelativeLayout ViewPager

<android.support.v4.view.ViewPager
    android:id="@+id/pager"

然后我有FragmentStatePagerAdapter来管理Fragment

现在我在名为Fragment的{​​{1}}上有一个公共方法(显然会返回foo)。

问题:从主要活动中获取getFoo()的{​​{1}}的正确方法是什么?

我尝试在Fragment上使用foo,但后来我无法获得addOnPageChangeListener()的有效实例。

1 个答案:

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