Activity -> FragmentContainerView с фрагментом A
Код: Выделить всё
Фрагмент A -> Фрагмент B (с addToBackStack)
Затем я перехожу от фрагмента B к фрагменту C
Фрагмент B -> Фрагмент C (без addToBackStack)
Мне нужно, когда я сохраните элемент во фрагменте C, вернитесь к фрагменту A, поэтому я не использую addToBackStack.
Проблема в том, что во фрагменте C я использую
Код: Выделить всё
requireActivity().supportFragmentManager.popBackStack()
Код: Выделить всё
requireActivity().onBackPressed()
Мне нужно из Фрагмент C возвращается к фрагменту A без вызова OnViewCreated фрагмента C
Интересный код
MainActivity
Код: Выделить всё
fun changeFragment(fragment: Fragment, addToBackStack: Boolean) {
val transaction = supportFragmentManager.beginTransaction()
.replace(R.id.host_fragment, fragment,fragment::class.java.simpleName)
if (addToBackStack) transaction.addToBackStack(null)
transaction.commit()
}
Код: Выделить всё
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
setupRecyclerView()
observeLoading()
observeProducts()
viewModel.fetchProducts()
viewBinding.btnEmptyProducts.setOnClickListener { viewModel.fetchProducts() }
viewBinding.fabAddPurchase.setOnClickListener { addPurchase() }
}
private fun addPurchase() {
(requireActivity() as MainActivity).changeFragment(ScanFragment.newInstance(),true)
}
Код: Выделить всё
override fun barcodeDetected(barcode: String) {
if (processingBarcode.compareAndSet(false, true)) {
(requireActivity() as MainActivity).changeFragment(PurchaseFragment.newInstance(barcode), false)
}
}
Код: Выделить всё
private fun observePurchaseState() {
viewModel.purchasesSaveState.observe(viewLifecycleOwner, { purchaseState ->
when (purchaseState) {
is PurchaseSaveState.Error -> TODO()
is PurchaseSaveState.Loading -> manageProgress(purchaseState.isLoading)
PurchaseSaveState.Success -> {
Toast.makeText(requireActivity(), getString(R.string.purchase_saved_successfully), Toast.LENGTH_SHORT).show()
requireActivity().supportFragmentManager.popBackStack()
}
}
})
}
Подробнее здесь: https://stackoverflow.com/questions/669 ... pbackstack
Мобильная версия