【问题标题】: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() 实现。
  • 是的,对不起,我忘了添加这个方法

标签: android fragment android-recyclerview onitemclicklistener onscrolllistener


【解决方案1】:

这是因为您要替换之前的片段。 如果您不想重置前一个片段的状态,请添加下一个片段而不是替换

改成——

fragmentTransaction.add(R.id.frag_container, detailsFragment, "TAG");

setDetailsFragment().

【讨论】:

  • 当我将其更改为添加而不是替换时,Main Fragment 仍在屏幕上,DetailsFragment 位于其顶部。
  • 是的,当然,这就是 .add() 的作用。那是什么问题呢?可以加截图吗?
  • 问题是主要片段并没有消失。我的详细信息片段中的图像和文本列表位于列表顶部
  • 问题在于布局文件。可以发一下吗?
  • 布局很好。我的 activity_main.xml 中有一个框架布局,它是我的两个片段的片段容器
猜你喜欢
  • 2015-08-26
  • 1970-01-01
  • 2017-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多