2012-10-24 107 views
0

我想調用在一個類中聲明的方法,而是包含方法由片段實例化的類:如何從通過片段實例化的類調用方法?

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

有幾種選擇給你。你可以存儲對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()

相關問題