Android:访问ViewPager中的片段方法

时间:2017-07-18 08:39:39

标签: android android-fragments

我有一个ViewPager,我正在为它添加一些片段。片段属于不同的类,它们将具有不同的布局和不同的按钮,功能等。

我不确定我是否采取了正确的方法来完成任务:

Fragment1 f1 = Fragment1.newInstance("FRAGMENT 1");
Fragment2 f2 = Fragment2.newInstance("FRAGMENT 2");
Fragment3 f3 = Fragment3.newInstance("FRAGMENT 3");
List<Fragment> fragmentsToPager = new Vector<Fragment>();
this.mPagerAdapter  = new MyFragmentAdapter(super.getSupportFragmentManager(), fragmentsToPager);
mPager.setAdapter(this.mPagerAdapter);

现在我的问题是,如果我想迭代列表中的片段,因为片段来自不同的片段Fragment1,Fragment2,Fragment3,是否可以访问片段中定义的方法或每个片段上的小部件?

for (Fragment f : fragmentsToPager){
    f.someFragmenthMethod();
    ....
}

2 个答案:

答案 0 :(得分:0)

for (Fragment f : fragmentsToPager){
            if (f instanceof Fragment1) {
                ((Fragment1) f).someFragmenth1Method();
            }else if(f instanceof Fragment2) {
                ((Fragment2) f).someFragmenth2Method();
            }else if(f instanceof Fragment3) {
                ((Fragment3) f).someFragmenth3Method();
            }

        }

答案 1 :(得分:0)

您可以定义一个接口(如IMyFragmentProcess),所有片段都实现此接口(IMyFragmentProcess):

IMyFragmentProcessf1 = Fragment1.newInstance("FRAGMENT 1");
IMyFragmentProcessf2 = Fragment2.newInstance("FRAGMENT 2");
IMyFragmentProcessf3 = Fragment3.newInstance("FRAGMENT 3");
List<IMyFragmentProcess> fragmentsToPager = new Vector<IMyFragmentProcess>();

for (IMyFragmentProcess f : fragmentsToPager){
    f.someFragmenthMethod();
    ....
}