从Activity中调用Fragment的方法——Android选项卡

4
我有一个安卓应用程序,其中包含几个选项卡。我使用以下教程创建选项卡:http://www.androidhive.info/2013/10/android-tab-layout-with-swipeable-views-1/。因此,使用由TabsPagerAdapter 处理的片段来实现选项卡,该类扩展了FragmentPagerAdapter
但是,我无法从我的主要活动中调用其中一个片段中的方法。
当我的主要活动接收到消息时,我想调用此方法。更具体地说,当接收到该消息时,我需要更新该片段的用户界面。但我不确定如何正确标识片段,因为它没有在xml中声明,因此没有标签/ID。
我希望有人能帮助我找到最佳方法来解决这个问题。

你有多少个片段? - mmlooloo
谢谢您指出这一点。然而,那个问题有些不同。它描述了如何从一个片段中调用另一个片段的方法。我希望找到的是如何从父活动中的片段调用方法。这是因为消息是在我的活动中接收的,而不是在片段中接收的。或者,如果有一种方法可以从父活动更改片段的UI,那对我也可以起作用。 - edbert
我有三个片段,但是为了这个问题,您可以假设我只有一个。当活动接收到消息时,我需要能够更新其中一个片段。 - edbert
请查看我的回答:https://dev59.com/Imcs5IYBdhLWcg3wk06X#38741476 - Noorul
1个回答

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();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接