getChildFragmentManager

getChildFragmentManager

问题

根据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/

10-11 21:33