はじめに
ViewPagerを使っていると、Pager内の画面と親のFragmentでやりとりを行い、何かしらのアクションを起こしたい、ってことありますよね
最近ではViewModelを通して親子でやり取りするようなやり方が主流な気がしますが、Pager内のFragmentで親のViewModelを取得する方法を簡単に残しておこうと思います。
ViewModelの取得方法
取得方法は非常に簡単です。
private val parentViewModel by viewModels<TestViewModel>({ requireParentFragment() })
以上です。
基本的なViewModelの取得方法にrequireParentFragmentを指定するだけになります。
上記で親のViewModelを取得可能です、あとはLiveData等を使って親Fragmentへ通知したりする形になるかと思います。
さいごに
親のViewModelを取得するのは簡単なのですが、ViewPagerを使うと双方の関係性が複雑になりがちなので、あらかじめしっかり設計しておく必要はあると思います。
特にViewPagerを使用する想定の画面が複数あると最初の画面をベースに作るケースが多いので、最初ほどしっかり考えてから実装しておきたいですね。