当swipeRefresh正在运行时,替换碎片无法正常工作



我有一个片段A,它包括一个SwipeRefresh和一个RecycleView。当用户点击RecycleView中的项目时,我会替换一个新的片段,它是B:

mAdapter.setOnItemClickListener(new MyAdapter.OnItemClickListener() {
            @Override
            public void onItemClick(View view, int position) {
                Item tem = mItems.get(position);
                // selected item
                Log.i(TAG, item.getTitle() + " clicked. Replacing fragment.");
                // We start the fragment transaction here. It is just an ordinary fragment transaction.
                getActivity().getSupportFragmentManager()
                        .beginTransaction()
                        .replace(R.id.content_fragment,
                                FragmentB.newInstance(item,
                                        (int) view.getX(), (int) view.getY(),
                                        view.getWidth(), view.getHeight())
                        )
                                // We push the fragment transaction to back stack. User can go back to the
                                // previous fragment by pressing back button.
                        .addToBackStack("detail")
                        .commit();
            }
        });

有一个问题:

当我开始使用SwipeRefresh进行刷新,并且它仍在运行时,我点击一个项目(如上面的代码所示),屏幕中的片段B将替换为under片段A。我可以在片段A的RecycleView下看到片段B!由于onStop()在片段A中调用,onCreateView在片段B中调用,我无法再在recycleView中滚动。

原因可能是什么?你有什么变通办法吗?

附录:崩溃也可以在谷歌样本中重现:

https://github.com/googlesamples/android-FragmentTransition/

这是一个错误。谷歌可能很快就会解决这个问题。

发布78062

我也遇到过同样的问题,我甚至没有使用addToBackStack,起初我认为片段没有被替换,但我启动了一个新线程,试图通过fragmentmanager找到旧片段,发现它已经被替换了,我认为你看到的不是真正的片段,你可以把它看作是滑动视图创建的用于显示动画的幻影。

巧合的是,我发现如果你为事务设置transition(),它会正常工作,也许过渡动画就可以了

最新更新