【问题标题】:How to return previous fragment by calling activity's onBackPress()如何通过调用活动 onBackPressed() 返回上一个片段
【发布时间】:2019-12-07 08:42:41
【问题描述】:

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

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()
    }
   }

【问题讨论】:

  • 尝试super.onBackPressed()点击图片并删除自定义实现。
  • @Ranjan 我试过但没用

标签: android android-fragments fragment-backstack


【解决方案1】:

如果您 imgBackfragmentB 通话中

imgBack.setOnClickListener {
activity?.onBackPressed()
}

【讨论】:

  • 是 onBackPressed 的实现在持有两个片段的 Activity 上
  • yes onBackPressed 在包含两个片段 A 和 B 的活动中
  • 我已经复制了您的场景,一切似乎都很好,您能否详细说明如何添加片段以及您的 fragmentA 在这种意外情况下如何显示
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-08
  • 2014-01-07
  • 2013-04-23
  • 2016-07-24
相关资源
最近更新 更多