Android開発をしている時にFragment
を戻したときに画面が真っ白になる不具合に出会ったことはがあります。popBackStack()
を使用した際に発生する不具合の原因と、その対策についてメモします。
現象:Fragmentを popBackStack() したら真っ白画面になる
supportFragmentManager.popBackStack()
これだけを実行させると、画面が真っ白になって何も表示されなぐなるばあいがあります。原因は「最後の Fragment を削除して次に表示する Fragment が存在しない」 ことが原因です。
popBackStack() は、バックスタックに保存されている Fragment を取り除くだけの処理を行います。なので、もし現在表示されている Fragment が最後の1つだった場合、表示する Fragment がなくなり、空のActivityが表示されます。
対策:バックスタックの数を確認してから戻る
popBackStack()を呼んだ後にバックスタックの数を確認すれば真っ白な画面を防げます。最後の Fragmentだった場合は、finish() を使ってActivityを終了させます。
supportFragmentManager.popBackStack()
if (supportFragmentManager.backStackEntryCount == 0) {
finish()
}
何も表示されない真っ白な画面を防ぐために、popBackStack() を使った後は次に表示する Fragmentがあるか確認することが大事です。