Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从通过片段实例化的类调用方法?_Java_Android - Fatal编程技术网

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();
...
当然,您可以存储参考以供以后使用,但要小心泄漏

更新:请注意,您也可以通过多种方式创建片段,例如使用其构造函数。您不必使用
实例化()