今回は Xamarin.Android で MainActivity を取得する方法をご紹介いたします。
MainActivity 内においては this で取得できますが、DepandencyService 等からはどのように取得すればよいのかわかりませんでした。
単純に MainActivity を取得するには、MainActivity の OnCreate で static なグローバル変数にセットする等方法はありますが、そんなことをしなくても簡単に取得できる方法が分かりましたので、ご紹介いたします。
前提条件
・Windows10 Pro 64Bit
・Visual Studio 2015 Community Update3
・Xamarin 4.3.0.795 (NuGet Xamarin.Forms 2.3.4.247)
・macOS Sierra 10.12.4 / Xcode8.3.1 / Xamarin.iOS 10.6.0.10
1.取得方法
たったの1行のみです。
//画面から呼び出す場合
Activity activity = (Activity)(Forms.Context);
//バックグラウンドから呼び出す場合
Activity activity = (Activity)(Android.App.Application.Context);
DependencyServiceにおいても、どこのAndroidプロジェクトのファイルにおいてもこの1行のみで取得が可能です。とても簡単ですが、変換のみで取得できるとはアプリ初心者には考えもつきませんでした。
※2020/09/22追記
Xamarin.Forms 3.5 以降では、Forms.Context が Obsolute 扱いになっており、MainActivity.OnCreate にて、this のインスタンスを static な変数に保存しておくことが望ましいでしょう。
当ブログの内容をまとめた Xamarin逆引きメニュー は以下のURLからご覧になれます。
https://itblog.dynaspo.com/blog-entry-81.html
- 関連記事
-