我有片段A,其中包含SwipeRefresh和RecycleView。 当用户单击RecycleView中的Item时,我替换了一个新的片段,即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!
我无法再在recycleView中滚动,因为在片段A中调用了onStop()
,在片段B中调用了onCreateView
。
可能是什么原因?你有任何解决方法吗?
补遗:崩溃也可以在谷歌样本中重现:
https://github.com/googlesamples/android-FragmentTransition/
答案 0 :(得分:2)
这是一个错误。谷歌可能会尽快修复它。
答案 1 :(得分:1)
我遇到了同样的问题,我甚至没有使用addToBackStack,起初我认为片段还没有被替换,但是我开始一个新的线程,并尝试通过fragmentmanager找到旧片段发现它已被替换,我认为你所看到的并不是真正的片段,你可以将其视为滑动视图为显示动画而创建的幻像。
巧合的是,我发现如果您为事务设置了TransTransition()并且它可以正常工作,那么过渡动画可能就可以了。