0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Fragmentの切り替え

Posted at

FragmentとBottomNavigationViewを利用した切り替えアプリを作ろうとして、Fragmentの仕様に左右されているので、気づいたこと確認したことがあれば適宜まとめていく。Qiitaの書き方の練習も兼ねている。

Fragmentを追加するにあたって

問題:切り替え時にViewが重なる

Fragment継承のクラスをいくつか作って、FragmentTransaction#replaceメソッドを利用して切り替えようとした時起きた問題。replaceでfragmentを入れ替えた時、既存のfragmentと新規のfragmentのviewが重なってしまった。

原因

XMLで記述したfragment(view)にreplaceしていた。どうやら、FragmentTransaction#replaceメソッドはfragmentビューのクラス切り替えをするようなメソッドでは無いらしい。今回は、元々ビューで設定していたfragmentとreplaceした新たなfragmentが重なって見えていたということ。

参考: Fragmentをreplaceしても一つ前のFragmentが残る

解決案

XMLではcontainerとして別のビューを使用。(今回はConstraintLayout)そこにreplaceなどして解決。

Fragment切り替え時

メモ:FragmentTransaction#replaceメソッドで指定したFragmentクラスについて

用意した複数のFragmentクラスに対してそれぞれオブジェクトをひとつずつ生成して使い回していこうと思っていたが、上記のメソッドでオブジェクトを指定した際、毎回Fragment#onCreateView Fragment#ononViewCreatedメソッドなどが呼び出されるようだ。値の初期化に対して気をつけていきたい。

尚、バックボタンで前のFragmentに戻ったりということは想定していないので、addToBackStackメソッドは利用していない。もしかしたら、これにより動作が変化するかもしれない。

0
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?