问题
根据Google的文档:
Fragment videoFragment = new VideoPlayerFragment();
FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
transaction.add(R.id.video_fragment, videoFragment).commit();
因此,我有一个
TestFragment
(例如),如下所示:public class TestFragment extends Fragment {
private View mFragmentView;
private FrameLayout mFrameLayout;
public HistoryFragment() {
super();
}
@Override
public View onCreateView(LayoutInflater pInflater, ViewGroup pViewGroup, Bundle pBundle) {
mFragmentView = pInflater.inflate(R.layout.fragment_layout, pViewGroup, false);
mFrameLayout = (FrameLayout) mFragmentView.findViewById(R.id.framelayout);
return mFragmentView;
}
public void onDestroyView() {
super.onDestroyView();
}
/* ISSUE */
public void doSomethingSpecial() {
FragmentManager tFragmentManager = getChildFragmentManager();
}
}
在
MainActivity
处,我将 fragment 初始化为:mTestFragment = new TestFragment();
mTestFragment.doSomethingSpecial();
然后,我通过
ViewPager
将 fragment 传递给FragmentPagerAdapter
。最后,我得到一个异常(exception)。但是,如果我只使用:
mTestFragment = new TestFragment();
然后就可以了。
问题
我在 fragment 中应该在哪里调用
getChildFragmentManager()
方法?我做错了什么?如果您有使用新的Android嵌套 fragment 的好例子,请与我分享链接。 非常感谢您的帮助。
最佳答案
简短的答案:我在Fragment的getChildFragmentManager()
方法中调用并使用onViewCreated()
。
例如:
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
addInnerFragment(); // This method does the getChildFragmentManager() stuff.
}
关于android - 在哪里调用getChildFragmentManager()?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18935505/