我有一个活动,它托管一个包含两个视图的片段,一个包含片段的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) {
}
}
我得到一个空指针异常,因为所有字段都没有被初始化...我应该做错了,请帮忙。
答案 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