Android開発

【Android開発】ネストされたフラグメント間でやりとり

投稿日:

子フラグメントでcontextを取得したい

フラグメントのListener/Callback設定をする際はonAttach内にて行う。

APIレベル23以降ではonAttach(Activity activity)がonAttach(Context context)に変わり、オーバーライドしてListener/Callback設定をする

ただし、ネストされた子フラグメント側でListener/Callback設定を行おうとしたときにcontextを取得しようとするとうまくいかない。

親フラグメントのライフサイクルでのonAttach時に子フラグメントが実装されていないために、contextに子フラグメントの参照ができないことが原因と考えられる。

よってListener/Callbackがうまく働かなくなってしまう。

そこで用いられるのが、getChildFragment()/getParentFragment()だ。

名前通り、子フラグメントor親フラグメントを読んで動的に参照することができる。

使用例は以下の通り。

DialogFragmentを使用する際に、fragmentを使うと親子関係になりこのような状況が度々起こりうる。

-Android開発

Copyright© ガジェジー , 2018 All Rights Reserved.