Можете ли вы помочь мне в этой проблеме.
У меня есть Активность с нижней панелью навигации, которая изменяет фрагмент в середине. Один из вариантов - показать список итенов, разделенных на 2 группы с помощью вкладок.
В первый раз, когда я открываю фрагмент, все данные находятся там, как и ожидалось, но один я изменяю фрагмент и снова вызываю новый экземпляр фрагмента со списком, все данные исчезают. Пожалуйста, смотрите GIF ниже для лучшего понимания:
![enter image description here](https://i.stack.imgur.com/hclIq.gif)
Вот код для установки вкладок:
private void setViewPager(){
List<Fragment> frag = new ArrayList<>();
frag.add(MyReservationsFragment.newInstance(true));
frag.add(MyReservationsFragment.newInstance(false));
MyViewPagerAdapter myViewPagerAdapter = new MyViewPagerAdapter(getFragmentManager(), frag, getContext());
vpaReservations.setAdapter(myViewPagerAdapter);
tabReservations.addTab(tabReservations.newTab().setText(getString(R.string.s_tab_1)));
tabReservations.addTab(tabReservations.newTab().setText(getString(R.string.s_tab_2)));
tabReservations.setupWithViewPager(vpaReservations);
}
А вот как я создаю экземпляр каждого фрагмента:
public class MyReservationsFragment extends Fragment implements MyReservationsContract.View{
private static final String TAG = "MyResFrag";
private static final String ONLY_PENDING = "onlyPending";
private static final String RESERVATION_ID = "reservationId";
@BindView(R.id.rvi_my_reservations) protected RecyclerView rviMyReservations;
private boolean onlyPending;
private MyReservationsContract.Presenter mPresenter;
public MyReservationsFragment() {
// Required empty public constructor
}
public static MyReservationsFragment newInstance(boolean onlyPending) {
MyReservationsFragment frag = new MyReservationsFragment();
Bundle args = new Bundle();
args.putBoolean(ONLY_PENDING, onlyPending);
frag.setArguments(args);
return frag;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
onlyPending = getArguments().getBoolean(ONLY_PENDING);
}
mPresenter=new MyReservationsPresenter();
}
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.frag_reservations_list, container, false);
ButterKnife.bind(this, view);
return view;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
// List<MyReservation> myReservations = Const.getMyReservations(onlyPending);
List<Reservation> myReservations = mPresenter.getUserReservationsByStatus(onlyPending);
setRecyclerView(myReservations);
}
private void setRecyclerView(final List<Reservation> myReservations){
rviMyReservations.setHasFixedSize(true);
LinearLayoutManager mLayoutManager = new LinearLayoutManager(getActivity());
rviMyReservations.setLayoutManager(mLayoutManager);
MyReservationAdapter mAdapter = new MyReservationAdapter(myReservations,getContext());
mAdapter.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int position = rviMyReservations.getChildLayoutPosition(view);
Intent intent = new Intent(getActivity(), ReservationDetailActivity.class);
intent.putExtra(RESERVATION_ID, myReservations.get(position).getId());
startActivity(intent);
}
});
rviMyReservations.setAdapter(mAdapter);
rviMyReservations.setItemAnimator(new DefaultItemAnimator());
}
}
Я уже пытался сохранить флаг переменной «onlyPending», но поскольку фрагмент не был уничтожен, он ведет себя так же. Я застрял на этом уже 2 дня, вы, ребята, можете мне помочь?