Android片段嵌套在另一个片段中:getParentFragment()返回0

时间:2014-03-19 09:14:14

标签: android android-fragments fragmentpageradapter

基本上情况是这样的:我有一个Activity,在Fragments中显示三个FragmentPagerAdapter,在其中一个Fragment中,我嵌套另一个Fragment。我添加了这样的片段:

fragmentTransaction = getFragmentManager().beginTransaction();
fragmentTransaction.add(rootView.getId(), new MainPageFragment(), "lpt2");
fragmentTransaction.commit();

当我尝试在getParentFragment()内拨打MainPageFragment()时,会返回null。 怎么可能?我在stackoverflow和其他博客上检查了多个帖子,他们都得出结论,如果你将一个片段嵌套在另一个片段中,调用getParentFragment应该返回它的父片段。返回null表示父级是指定here的活动。事实并非如此。请告诉我,我犯了一些愚蠢的错误:\

这是主Fragment

的孩子Activity
public class MainPage extends Fragment {

private FragmentTransaction fragmentTransaction;
private View rootView;

public View onCreateView(LayoutInflater inflater, ViewGroup container,
           Bundle savedInstanceState) {
        global_var = new Global();
        rootView = inflater.inflate(R.layout.main_page, container, false);
        return rootView;
}
@Override
public void onViewCreated (View view, Bundle savedInstanceState) {      
    fragmentTransaction = getFragmentManager().beginTransaction();
    fragmentTransaction.add(rootView.getId(), new MainPageFragment(), "lpt2");
    fragmentTransaction.commit();
}
}

这是片段,它是Main Page Fragment

的孩子
public class MainPageFragment extends Fragment{
private View rootView;
private Fragment parentFragment;
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    rootView = inflater.inflate(R.layout.main_page_list, container, false);
    if (getParentFragment() == null) Log.i("damn", "it");
    return rootView;
   }

@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onViewCreated(view, savedInstanceState);
}
}

请告诉我,如果我需要提供更多代码,我会提取ListView等内容,因为我认为这是无关紧要的。

编辑:我正在使用android.support.v4.app

1 个答案:

答案 0 :(得分:1)

检查您是否已FragmentManager通过FragmentPagerAdapter对所有碎片的引用,然后使用getParentFragment()。可能这会对你有帮助。