如何通过调用活动的onBackPress()返回上一个片段

时间:2019-12-07 08:42:41

标签: android android-fragments fragment-backstack

我有一个活动,其中添加了两个片段:

fun addFragment(fragment: Fragment){

    private val fragmentManager = supportFragmentManager
    val fragmentTag  = fragment::class.simpleName.toString()
    val ft = fragmentManager.beginTransaction()

    ft.add(R.id.fragments_container, fragment,fragmentTag)
    ft.addToBackStack(fragmentTag)
    ft.commit()

}

我按以下顺序将两个片段A和B添加到活动中: A ---> B

当我按电话上的后退按钮时,它会按预期的那样从B返回到A

但是问题是,例如,当我单击视图时调用活动的 onBackPressed 方法时:

imgBack.setOnClickListener {
   onBackPressed()
}

它不像我按手机上的后退按钮时一样工作
它会返回片段A,但未按预期显示片段A的视图。

onBackPressed:

override fun onBackPressed() {

    if (fragmentManager.backStackEntryCount > 1) {
        fragmentManager.popBackStack()
    } else {
        finish()
    }
   }

1 个答案:

答案 0 :(得分:0)

如果您imgBack正在fragmentB通话中

imgBack.setOnClickListener {
activity?.onBackPressed()
}