gpt4 book ai didi

android - 另一个 fragment 中的 fragment 不调用 onResume() 和 onPause()?

转载 作者:行者123 更新时间:2023-11-29 01:02:45 25 4
gpt4 key购买 nike

我有一个初始化 FragmentA 的 Activity ,FragmentA 包含 FragmentB

因此,当我用一些 FragmentC 替换 FragmentA 时,onPause()onResume() 函数FragmentB 未被调用。

并且,当我返回到 FragmentA 时,FragmentB 的 onPause()onResume() 之前被调用。

这是我的 Activity 示例代码:

    class MyActivity : Activity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

if (savedInstanceState == null) {
val myFragmentA = FragmentA()
fragmentManager
.beginTransaction()
.replace(R.id.fragContainer, myFragmentA, FRAGMENT_A_TAG)
.commit()
}
}
}

这是我的 fragment 示例代码:

    class FragmentA : Fragment() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// loading fragmentB
fragmentManager.beginTransaction().replace(R.id.fragBContainer, FragmentB()).commit()

}
override fun onViewCreated(view: View?, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
//my layout changes

}
}

fragment B:-

    class FragmentB : Fragment() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
//Todo -- empty

}
override fun onViewCreated(view: View?, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
//my layout changes

}
}

最佳答案

Fragment B 没有调用它的 onResumeonPause() 的原因是因为它没有被正确地添加到 View 中.如果您想嵌套 fragment ,则在管理嵌套 fragment 时需要使用 getChildFragmentManager() 而不是常规的 FragmentManager():

getChildFragmentManager().beginTransaction().replace(R.id.fragBContainer, FragmentB()).commit()

关于android - 另一个 fragment 中的 fragment 不调用 onResume() 和 onPause()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49825450/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com