0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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があるか確認することが大事です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?