У меня есть два фрагмента, мне нужно сохранить их оба, но показывать и скрывать при нажатии кнопки.
Я добавил первый фрагмент, используя:
FragmentTransaction transaction = getSupportFragmentManager()
.beginTransaction();
mDishFragment = new DishFragment();
transaction.add(R.id.dish_fragment, mDishFragment, "DishFragment");
transaction.commit();
Первый фрагмент (DishFragment) имеет кнопку, при нажатии которой код проверяет, существует ли «OrderSummaryFragment» (используя findFragmentbyTag), если это так, он должен показать (), иначе добавить () новый. вот код:
FragmentTransaction transaction = getSupportFragmentManager()
.beginTransaction();
if (getFragmentManager().findFragmentByTag("OrderSummaryFragment") == null) {
System.out.println("OrderSummaryFragment not found");
transaction.add(R.id.dish_fragment, mOrderSummaryFragment,"OrderSummaryFragment");
System.out.println("Orderfragment added");
transaction.addToBackStack(null);
transaction.commit();
}else{
System.out.println("OrderSummaryFragment found");
transaction.hide(mDishFragment);
transaction.show(mOrderSummaryFragment);
transaction.commit();
}
Впервые с тех пор, как «OrderSummaryFragment» не существует, код добавляет его и отображает. На «OrderSummaryFragment» есть кнопка «Назад», нажатие которой показывает () первый фрагмент «DishFragment». Во второй раз, поскольку мы уже добавили «Ordersummaryfragment» ранее, findFragmentByTag должен вернуть OrderSummaryFragment, но вместо этого возвращает null.
Примечание. Я не использую replace(), потому что хочу повторно использовать оба этих фрагмента.
Надеюсь, кто-нибудь может мне помочь.