2
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?

More than 1 year has passed since last update.

親のViewModelを参照する方法

Posted at

はじめに

ViewPagerを使っていると、Pager内の画面と親のFragmentでやりとりを行い、何かしらのアクションを起こしたい、ってことありますよね
最近ではViewModelを通して親子でやり取りするようなやり方が主流な気がしますが、Pager内のFragmentで親のViewModelを取得する方法を簡単に残しておこうと思います。

ViewModelの取得方法

取得方法は非常に簡単です。

private val parentViewModel by viewModels<TestViewModel>({ requireParentFragment() })

以上です。
基本的なViewModelの取得方法にrequireParentFragmentを指定するだけになります。
上記で親のViewModelを取得可能です、あとはLiveData等を使って親Fragmentへ通知したりする形になるかと思います。

さいごに

親のViewModelを取得するのは簡単なのですが、ViewPagerを使うと双方の関係性が複雑になりがちなので、あらかじめしっかり設計しておく必要はあると思います。
特にViewPagerを使用する想定の画面が複数あると最初の画面をベースに作るケースが多いので、最初ほどしっかり考えてから実装しておきたいですね。

2
0
1

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
2
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?