我想调用一个在类中声明的方法,但包含该方法的类由片段实例化:
protected void setupViewPager() {
List<Fragment> fragments = new Vector<Fragment>();
fragments.add(Fragment.instantiate(this, AFTab1.class.getName()));
fragments.add(Fragment.instantiate(this, AFTab2.class.getName()));
fragments.add(Fragment.instantiate(this, AFTab3.class.getName()));
this.mPagerAdapter = new PagerAdapter(super.getSupportFragmentManager(), fragments);
this.mViewPager = (ViewPager)super.findViewById(R.id.viewpager);
this.mViewPager.setAdapter(this.mPagerAdapter);
this.mViewPager.setOnPageChangeListener(this);
}
例如,如果我想调用AFTab1的方法,我该怎么做呢?
答案 0 :(得分:0)
有几种选择。你可以存储对instantiate()
返回的片段的引用,你可以给片段一个id,你可以给它一个标签(我打赌有更多选项)。在你的情况下,我会存储这样的引用:
protected void setupViewPager() {
List<Fragment> fragments = new Vector<Fragment>();
AFTab1 tab1 = (AFTab1) Fragment.instantiate(this, AFTab1.class.getName());
AFTab2 tab2 = (AFTab2) Fragment.instantiate(this, AFTab2.class.getName());
AFTab3 tab3 = (AFTab3) Fragment.instantiate(this, AFTab3.class.getName());
fragments.add(tab1);
fragments.add(tab2);
fragments.add(tab3);
tab1.aMethod();
...
您当然可以存储该参考文献以供日后使用,但请注意泄漏。
更新:请注意,您也可以通过多种方式创建片段,例如使用其构造函数。您不必使用instantiate()
。