如何在TransitionManager场景转换期间存活片段引用

时间:2017-05-22 18:10:59

标签: android android-transitions

我正在尝试Android TransitionManager,只要我没有片段,它就会很好用。这是一个基本的Scene设置,在场景转换后的setEnterAction()中,findViewById用于重新附加视图。

       @Override
        public View onCreateView(LayoutInflater inflater,
                ViewGroup container, Bundle savedInstanceState) {
            View view = inflater.inflate(R.layout.fragment_part2,
                    container, false);
            mContainer = (ViewGroup)view.findViewById(R.id.container);
            mTxManager = new TransitionManager();
            Transition transition = new ChangeBounds();
            mScene2 = Scene.getSceneForLayout(mContainer, R.layout.grid1, getActivity());
            mScene1 = Scene.getSceneForLayout(mContainer, R.layout.grid1, getActivity());
            mScene1.setEnterAction(new Runnable() {
                @Override
                public void run() {
                    mScene1.getSceneRoot().findViewById(R.id.item2).setOnClickListener(Part2.this);
                    mScene1.getSceneRoot().findViewById(R.id.item3).setOnClickListener(Part2.this);
                }
            });

}

我遇到的问题是我Fragment中有一个mScene1而且丢失了。我没有在xml中设置Fragment。如何在场景移位之间仅使用一个片段而不删除它并再次添加它。这是一个补充文件Fragmnet所以我必须让它保持活力吗?

我正在做的并且不满意的是在Fragment退出时移除mScene1

mScene1.setExitAction(new Runnable() {
    @Override
    public void run() {
        Fragment f = getChildFragmentManager().findFragmentByTag(HistoryFragment.class.getName());
        FragmentTransaction transaction1 = getChildFragmentManager().beginTransaction();
        transaction1.remove(f);
        transaction1.commitNow();
    }
});

然后当mScene1.setEnterAction()运行时,我重新连接了Fragment。我注意到我的应用程序开始有点滞后,因为添加删除的额外工作。

有没有办法在Scene´s之间只有一个Frag?

0 个答案:

没有答案