从另一个片段返回时返回到屏幕上的当前位置
Posted
技术标签:
【中文标题】从另一个片段返回时返回到屏幕上的当前位置【英文标题】:Return to current position on the screen when returning from another fragment 【发布时间】:2016-11-01 20:11:04 【问题描述】:我有一个片段,其中包含在 recyclerView 中显示的项目列表。该列表可以无休止地滚动。每个项目都是可点击的,并打开另一个带有其描述的片段。我的问题是当我单击任何项目并返回时,我想返回到屏幕上的相同位置。现在,即使滚动很多项目,我也总是返回屏幕顶部。
private void setScrollListener()
recyclerView.addOnScrollListener(new EndlessRecyclerViewScrollListener(linearLayoutManager)
@Override
public void onLoadMore(int page, int totalItemsCount)
apiCall(pageNumber++, 10);
);
private void listClickListener()
if (myAdapter != null)
myAdapter.setOnItemClickListener(new OnItemClickListener()
@Override
public void onItemClick(View itemView, int position)
Items items = itemsList.get(position);
setDetailsFragment(items.getDescription());
);
private void setDetailsFragment(String description)
DetailsFragment detailsFragment = new DetailsFragment();
detailsFragment.setDescription(description);
FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.frag_container, detailsFragment, "TAG");
fragmentTransaction.addToBackStack("TAG");
fragmentTransaction.commit();
【问题讨论】:
请发布您如何在项目点击时切换到下一个片段的代码,即setDetailsFragment()
实现。
是的,对不起,我忘了添加这个方法
【参考方案1】:
这是因为您要替换之前的片段。 如果您不想重置前一个片段的状态,请添加下一个片段而不是替换
改成——
fragmentTransaction.add(R.id.frag_container, detailsFragment, "TAG");
在setDetailsFragment()
.
【讨论】:
当我将其更改为添加而不是替换时,Main Fragment 仍在屏幕上,DetailsFragment 位于其顶部。 是的,当然,这就是 .add() 的作用。那是什么问题呢?可以加截图吗? 问题是主要片段并没有消失。我的详细信息片段中的图像和文本列表位于列表顶部 问题在于布局文件。可以发一下吗? 布局很好。我的 activity_main.xml 中有一个框架布局,它是我的两个片段的片段容器以上是关于从另一个片段返回时返回到屏幕上的当前位置的主要内容,如果未能解决你的问题,请参考以下文章