簡體   English   中英

按下后退按鈕時,上一個片段顯示空白屏幕(使用多個 fragmentTransactions)

[英]Previous fragment shows blank screen when back button pressed (using multiple fragmentTransactions)

我有一個活動,它在平板電腦上同時顯示兩個片段,在手機上一次顯示一個片段。 因為我正在為平板電腦和安卓開發應用程序,所以我必須將片段之間的導航功能分離到一個單獨的函數“displaySecondFragmentOnHandset()”中。

在較小的手機上,當從第一個片段移動到第二個片段然后嘗試返回到第一個片段時,屏幕是空白的。

我的活動:

    class CentralActivity : AppCompatActivity() {

    val manager = supportFragmentManager
    var firstFrag : FirstFrag? = null

    override fun onCreate(savedInstanceState: Bundle?) {

        ...

            var ft: FragmentTransaction = manager.beginTransaction();

            firstFrag = FirstFrag.newInstance()
            ft.add(R.id.real_container, firstFrag!!, "firstFrag")

            if (screenLayoutSize >= Configuration.SCREENLAYOUT_SIZE_LARGE) {
                var secondFrag = SecondFrag.newInstance()
                ft.add(R.id.real_container, secondFrag, "secondFrag")
            }
            ft.commit()
    }

    fun displaySecondFragmentOnHandset (){
        var secondFrag = SecondFrag.newInstance()
        var ft: FragmentTransaction = manager.beginTransaction();
        ft!!.replace(R.id.real_container, secondFrag).addToBackStack("secondFrag").commit()
    }

然后在我的 FirstFragemnt 中,如果我使用的是較小的手機,我會這樣做:

    class FirstFragemnt : Fragment() {
          private var viewModel: SharedViewModel? = null

          fun goToSecondFragment(){
          if (screenLayoutSize!! < Configuration.SCREENLAYOUT_SIZE_LARGE) {

            viewModel!!.setMsgInCommunicator(collection)
            var centralActivity: CentralActivity = activity as CentralActivity
            centralActivity.displaySecondFragmentOnHandset()
     }
    }

問題是當我按后退按鈕轉到第一個片段時,屏幕是空白的。

在 CentralActivity 中替換

ft!!.replace(R.id.real_container, secondFrag).addToBackStack("secondFrag").commit()

ft!!.add(R.id.real_container, secondFrag).addToBackStack("secondFrag").commit()

解決方案是將fun goToSecondFragment()放在override fun onViewCreated

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM