我有一个有几个选项卡的 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。
我希望有人能够帮助我找到做到这一点的最佳方法。
最佳答案
首先在 onCreate
的 Activity
方法中创建所有 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/