Fragment Inside viewpager和具有viewpager的片段之间的通信

时间:2016-05-21 20:30:35

标签: android android-fragments android-viewpager

我有一个活动,它托管一个包含两个视图的片段,一个包含片段的mapview和viewpager。 我不知道如何使viewpager中的片段与主片段(具有viewpager的片段)进行通信 这是我使用的代码:

public class ViewPagerAdapter extends FragmentPagerAdapter implements Serializable {
    private final List<Fragment> mFragmentList = new ArrayList<>();
    private final List<String> mFragmentTitleList = new ArrayList<>();
    public List<Step> steps = new ArrayList<>();

    public ViewPagerAdapter(FragmentManager manager) {
        super(manager);
    }

    @Override
    public Fragment getItem(int position) {
        return mFragmentList.get(position);
    }

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

    public void addFragment(Fragment fragment, String title) {
        mFragmentList.add(fragment);
        mFragmentTitleList.add(title);
    }

    public void addFragment(StepsFragment fragment, Step step){
        fragment.getSteps().setText(step.getHtmlInstruction());
        mFragmentList.add(fragment);
        steps.add(step);
    }

    @Override
    public CharSequence getPageTitle(int position) {
        return null;
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
    }
}

我得到一个空指针异常,因为所有字段都没有被初始化...我应该做错了,请帮忙。

1 个答案:

答案 0 :(得分:1)

包含视图寻呼机的片段可以通过id / tag通过getSupportFragmentManager访问。

// Warning: getActivity() can be null in some cases.
Fragment fragment = getActivity().getSupportFragmentManager().findFragmentById(R.id.your_fragment);
if (fragment instanceof FragmentB)
{
   FragmentB fragmentB = (FragmentB) fragment;

}

另一种方法是做同样的事情,但通过你的活动。 FragmentA-&GT;活动 - &GT; FragmentB

https://developer.android.com/training/basics/fragments/communicating.html