Java 如何从通过片段实例化的类调用方法?
我想调用在类中声明的方法,但包含该方法的类由片段实例化:Java 如何从通过片段实例化的类调用方法?,java,android,Java,Android,我想调用在类中声明的方法,但包含该方法的类由片段实例化: protected void setupViewPager() { List<Fragment> fragments = new Vector<Fragment>(); fragments.add(Fragment.instantiate(this, AFTab1.class.getName())); fragments.add(Fragment.instantiate(this, A
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);
}
protectedvoid setupViewPager(){
列表片段=新向量();
add(Fragment.instantiate(this,AFTab1.class.getName());
add(Fragment.instantiate(this,AFTab2.class.getName());
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.mviewpage.setOnPageChangeListener(this);
}
例如,如果我想调用AFTab1的方法,我该怎么做呢?有几个选项供您选择。您可以存储对
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();
...
protectedvoid setupViewPager(){
列表片段=新向量();
AFTab1 tab1=(AFTab1)Fragment.instantiate(这是AFTab1.class.getName());
AFTab2 tab2=(AFTab2)Fragment.instantiate(这是AFTab2.class.getName());
AFTab3 tab3=(AFTab3)Fragment.instantiate(这是AFTab3.class.getName());
添加(表1);
添加(表2);
添加(表3);
表1.aMethod();
...
当然,您可以存储参考以供以后使用,但要小心泄漏
更新:请注意,您也可以通过多种方式创建片段,例如使用其构造函数。您不必使用实例化()