我有一个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();
....
}
答案 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();
....
}