Android ViewからActivityを取得する

はじめに

今回はViewからActivityを取得する方法を紹介します。

ViewからActivityを取得する必要があるケースというのはあまり出会うことはないかもしれませんが、、
ついこの間、必要になったことがあったのでこちらに残しておこうかと思います。

方法

Viewの拡張プロパティに activity というインスタンスを追加するのが早いです。

/**
 * Activity
 */
val View.activity: Activity?
    get() {
        var context = context
        while (context is ContextWrapper) {
            if (context is Activity) {
                return context
            }
            context = context.baseContext
        }
        return null
    }

参照

GoogleのサポートライブラリでViewからActivityを取得する実装がされていました。

android.googlesource.com