另一个片段内的片段不会调用onResume()和onPause()?

时间:2018-04-13 21:36:04

标签: android android-fragments kotlin

我有一项活动初始化FragmentAFragmentA包含FragmentB

因此,当我用FragmentA替换FragmentC时,onPause()的{​​{1}}和onResume()函数未被调用。

而且,当我返回FragmentB时,FragmentB' FragmentA将在onPause()之前被调用。

这是我的活动示例代码:

onResume()

这是我的片段示例代码:

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

片段B: -

    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

        }
    }

1 个答案:

答案 0 :(得分:1)

Fragment B未调用onResumeonPause()的原因是因为它未正确添加到视图中。如果要嵌套片段,则在管理嵌套片段时需要使用getChildFragmentManager()而不是常规FragmentManager()

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