2014-09-02 77 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();