前人未踏の領域へ Androidアプリ開発編

Androidアプリ開発に関する調査メモ置き場。古い記事にはアプリ以外も含まれます。

Fragmentから親ActivityのonActivityResultを呼ぶ

課題

Fragmentから親ActivityのonActivityResultを呼びたい。どうすればよいか。

対応

昔の実装見たら解決済みだったのだけど、あれ、どうやるんだっけ?となったのでメモ。

onActivityResultをpublicでoverrideする

onActivityResultはprotectedで定義されているのでそのままoverrideしてもFragmentから実行できないのでpublicを明示してscopeを拡大する

public override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)

   ...省略
}

直接呼ぶ

Fragment側でactivityを親Activityにcastして使う

if (requiredActivity() is HogeActivity) {
    (requiredActivity() as HogeActivity).onActivityResult() //パラメータは省略
}