当下拉刷新正在运行时,替换碎片无法正常工作。

3

我有一个包含SwipeRefresh和RecycleView的片段A。 当用户点击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进行刷新时,如果它仍在运行,并且我点击一个项目(就像你在上面的代码中看到的那样),Fragment B将在屏幕上替换 Fragment A 。 我可以在 Fragment A 的 RecycleView 下面看到 Fragment B! 由于在 Fragment A 中调用了 onStop(),而在 Fragment B 中调用了 onCreateView(),因此我无法再滚动 RecycleView。

可能的原因是什么?您有任何解决方法吗?

补充说明:崩溃也可以在谷歌示例中重现:

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


请尝试这个链接:http://stackoverflow.com/a/29251199/4693713希望能对您有所帮助。 - Avishek Das
这个和我的代码有什么不同呢? :) - Ali
不要使用addToBackStack,也许会起作用。 - Avishek Das
那就是我想要的。你知道那是什么吗?为什么你建议这个? - Ali
这将把你之前的片段放入后退栈中。 - Avishek Das
2个回答

2

这是一个错误。Google可能很快会修复它。

问题78062


1
我遇到了同样的问题,甚至没有使用addToBackStack。起初我认为片段没有被替换,但是我启动了一个新线程并尝试通过fragmentmanager找到旧片段,并发现它已经被替换了。我认为你看到的不是真正的片段,你可以把它看作是滑动视图创建的幻影来显示动画。 巧合的是,我发现如果为事务设置setTransition(),它将正常工作,也许过渡动画做了这个技巧。

抱歉,但我认为这并不完全正确。我发现了另一个问题,请查看此链接的评论部分(https://dev59.com/YF8d5IYBdhLWcg3wNAKy#27073879)。 - cajsaiko

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接