我有一个有几个选项卡的 android 应用程序。要创建选项卡,我使用了以下教程:

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

因此,选项卡是使用由 TabsPagerAdapter 处理的 Fragment 实现的,它扩展了 FragmentPagerAdapter

但是,我无法在主要 Activity 的其中一个 fragment 中调用方法。

当我的主要 Activity 收到消息时,我想调用此方法。更具体地说,我需要在收到此消息时更新 fragment 的 UI。但我不确定如何正确识别 fragment ,因为它没有在 xml 中声明,因此没有标签/id。

我希望有人能够帮助我找到做到这一点的最佳方法。

最佳答案

首先在 onCreateActivity 方法中创建所有 fragment 并将它们添加到 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);
}

}

因此,当您想从 Activity 调用方法到 fragment 时,请说 1,请执行以下操作:
mMyFrag.get(1).yourMethod();

关于android - 从 Activity android 选项卡调用 fragment 方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25629042/

10-10 18:30
查看更多