基本上情况是这样的:我有一个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
答案 0 :(得分:1)
检查您是否已FragmentManager
通过FragmentPagerAdapter
对所有碎片的引用,然后使用getParentFragment()
。可能这会对你有帮助。