iOS開発者のAndroid開発入門その6(画面遷移)

botman3 Android

はじめに

Android の画面は基本的に1画面1 Activity だと思うが Activity = UIViewController だと思うのはちょっと危険な気がする。
Activity 間はゆる〜く関係し合ってはいるがほとんど独立したものと考えた方がいいかもしれない。他アプリから指定の Activity 起動もできるので Web ページに近いかもしれない。なんにしろ UIViewController とは別の何かだと思っておいた方がよさそう。(Context さえあれば Activity 以外からも Activity は呼べる)
今回はそんな Activity の画面遷移について書きます。

Navigation はこっち

アプリ内遷移

Activity 間の遷移には Intent を利用します。Activity の遷移には startActivity()startActivityForResult() の2つがあります。

startActivity

遷移先 Activity から遷移元 Activity に結果を返す必要がない場合はこちらを利用します。
遷移処理

値を渡す場合

startActivityForResult

遷移先 Activity から遷移元 Activity に結果を返す場合はこちらを利用します。
遷移処理

戻るボタンなどでsetResult() を呼ばずに遷移元に戻った場合は resultCodeRESULT_CANCELED になる。

他アプリ間の遷移

マニフェストファイルで指定の Activity にインテントフィルタを設定しておくと他アプリから Activity を起動することもできる。

表示

上記のように Android Sharesheet を利用した方がいいらしい。
アクション指定でやるのは暗黙的インテント、アクティビティの名前まで指定するのは明示的インテントというらしい。明示的インテントは基本的に同一アプリ内でしか使わない模様。

参考

余談

Activity はすべてマニフェストファイルに記載する必要があり書いてないと下記のようなエラーになる。

アプリ起動時に表示する Activity には下記のようにインテントフィルタを設定する。

さいごに

Android の難関は Intent と Activity だと思う。ViewController 感覚で Activity を利用してしまうと痛い目にあう(ライフサイクルとか)。。。
Java だけど下記記事が参考になる気がした。
Androidの画面設計や遷移に関して整理してみる

コメント

タイトルとURLをコピーしました