2014-09-02 40 views
4

我有一個Android應用程序有幾個選項卡。要創建選項卡我用下面的教程:從活動調用片段方法android tabs

http://www.androidhive.info/2013/10/android-tab-layout-with-swipeable-views-1/

因此標籤使用的是由TabsPagerAdapter延伸FragmentPagerAdapter處理的片段來實現。

但是我在調​​用我的主要活動中的一個片段中的方法時遇到了問題。

我想在我的主要活動收到消息時調用此方法。更具體地說,我需要在收到此消息時更新片段的UI。但我不確定如何正確識別片段,因爲它沒有在xml中聲明,因此沒有標籤/ ID。

我希望有人能夠幫助我找到最好的方式來做到這一點。

+0

possible [調用方法inbetween片段中的選項卡](http://stackoverflow.com/questions/14202662/calling-method-inbetween-fragments-which-are-in-tabs) – 2014-09-02 17:40:42

+0

你有多少片段? – mmlooloo 2014-09-02 17:45:52

+0

謝謝你指出。但是這個問題有點不同。它描述瞭如何從另一個片段中的片段調用方法。我希望找到的是如何從父活動中的片段調用方法。這是因爲消息在我的活動中收到,而不是在片段中。或者,如果有一種方法可以從父活動更改片段的UI,這對我也有效。 – edbert 2014-09-02 17:50:26

回答

1

首先創建所有的片段中的ActivityonCreate方法,並將它們添加到mMyFrag

ArrayList<MyFragment> mMyFrag = new ArrayList<MyFragment>(); 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    for(int i=0; i<4; i++) { 
     MyFragment fragment = MyFragment.newInstance(arg); 
     mMyFrag.add(fragment); 
    } 
} 

,改變你的適配器:當你想打電話從活性的方法

private class MyPagerAdapter extends FragmentPagerAdapter { 

private ArrayList<MyFragment> mMyFragList; 

public MyPagerAdapter(FragmentManager fm, ArrayList<MyFragment> list) { 
    super(fm); 
    mMyFragList = list; 
} 

@Override 
public int getCount() { 
    return mMyFragList.size(); 
} 

@Override 
public int getItemPosition(Object object) { 
    return POSITION_NONE; 
} 

@Override 
public MyFragment getItem(int position) { 
    return mMyFragList.get(position); 
} 

} 

所以要片段說1做到這一點:

mMyFrag.get(1).yourMethod();