我有一个包含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/