Закрытие и возврат из ViewPager - PullRequest
0 голосов
/ 05 ноября 2018

У меня есть RecyclerView, который позволяет пользователю щелкнуть элемент и открыть элемент в ViewPager, чтобы они могли легче просматривать элементы RecyclerView. Мой вопрос: как я могу закрыть окно просмотра и вернуться к RecyclerView без перезагрузки / изменения моего RecyclerView?

Мой ViewHolder выглядит примерно так:

 public class ItemViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
        public ItemViewHolder(View itemView) {
            super(itemView);              
        }

        // clicked item in recycler view
        @Override
        public void onClick(View view) {
            SubmissionObj submissionObj = getItem(getLayoutPosition());               
            int curr = this.getLayoutPosition();

            new Handler().post(new Runnable() {
                @Override
                public void run() {
                    mViewPager.setAdapter(new SubmissionsPagerAdapter(FragmentHome.this.getFragmentManager()));
                    mViewPager.setCurrentItem(curr);
                }
            });        
        }
    }

И мой адаптер ViewPager:

    private class SubmissionsPagerAdapter extends FragmentStatePagerAdapter {
        public SubmissionsPagerAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public Fragment getItem(int position) {         
            return FragmentFullDisplay.newInstance(SubredditContentRecyclerAdapter.this.getItem(position));
        }

        @Override
        public int getCount() {
            return Integer.MAX_VALUE; // todo: temporary debug value
        }
    }

Я попытался добавить следующее во фрагмент FragmentFullDisplay, который используется для отображения элементов в ViewPager, но ничего не происходит (количество записей в backstack равно 0, поэтому я должен что-то неправильно понять):

private void closeFullDisplay() {
    if (getActivity() != null) {
        getActivity().getSupportFragmentManager().popBackStack();
    }
}
...