Pu sh, затем заменить PopBackStack - PullRequest
0 голосов
/ 14 января 2020

Я работаю над транзакцией фрагмента, и backstack выглядит следующим образом:

...fragA =>(push)=> fragB =>(replace)=> fragC =>(replace)=> fragD

Я хотел бы вернуться к fragA после фрагмента

fragD =>(button click)

Но это не так работает на меня. Следующий код должен заменить или фрагмент pu sh.

    fun pushFragmentTag(activity: FragmentActivity, fragment: Fragment, data: Bundle? = null, tag: String? = null) {
        showFragment(activity, fragment, true, data, tag, false, null)
    }

    fun replaceFragment(activity: FragmentActivity, fragment: Fragment, data: Bundle? = null) {
        showFragment(activity, fragment, false, data, null, false, null)
    }

    fun showFragment(activity: FragmentActivity?, fragment: Fragment, isPushInsteadOfReplace: Boolean, data: Bundle? = null, tag: String? = null, isShowAnimation: Boolean = false, shareElementView: View? = null) {
        if (activity == null) {
            return
        }

        if (data != null) {
            fragment.arguments = data
        }

        val fragmentTransaction = activity.supportFragmentManager.beginTransaction()

        if (isShowAnimation) {
            //            fragmentTransaction.setCustomAnimations(R.anim.slide_in_up,
            //                    R.anim.slide_out_up);
        }

        if ( shareElementView != null) {
            fragmentTransaction.addSharedElement(shareElementView, ViewCompat.getTransitionName(shareElementView)!!)
        }

        fragmentTransaction.replace(R.id.container, fragment, tag)
        if (isPushInsteadOfReplace) {
            fragmentTransaction.addToBackStack(tag)
        }

        fragmentTransaction.commit()
    }

Помогите мне быстро, пожалуйста.

...