6
3

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 5 years have passed since last update.

Android Intent

Posted at

No15, 16 インテントについて

Index

  1. Androidの画面遷移
  2. インテント
  3. ライフサイクル

Androidの画面遷移

アンドロイドの画面遷移は、上に乗る形で行われる。

詰まる話、ダイアログやポップアップをイメージすると良い。

この仕様をリストビューと呼ぶ。

元の画面に戻るときは、今の画面を消すことによって裏にかくれていた画面が表にでてくる。

別の画面の軌道を制御する仕組みが、__インテント__であり、その中心となるクラスがIntentクラス。

インテントの使い方は下記の2種類の方法が存在している。

  • 明示的インテント: 同一アプリ内で別の画面の軌道
  • 暗黙的インテント: アプリ間での画面起動(謎?)

インテント

アクティビティ登録

Androidアプリに画面を追加するには下記の3個の作業を行う

  1. アクティビティクラスを作成する。
  2. Layout.xmlファイルを作成する。
  3. AndroidManifest.xmlに登録する。

<activity android:name=".className" />

manifestの書き方は公式を参照することとする。

tips

メインアクティビティはアプリの起動時アクティビティ

AndroidStudioがあらかじめ記述するもの。

上記の3作業を自動的に行ってくれるものが、AndroidStudioに備わっているので、それを利用すると良い。

File > New > Activity > EmptyActivity (間違えないようにしよう))

画面の起動

今の画面から別の画面を起動するには以下の手順をとる。

  1. Intentオブジェクトを生成するIntent intent = new Intent(...Activity.this, ...Activity.class);
  • Intent(コンテキスト, アクティビティクラス);
  1. 項目1を引数としてアクティビティを起動する。 startActivity(intent);

遷移先の画面にデータを渡す

putExtra(StringKey, ObjectValue)を使用し、データを譲渡する。

example.java
intent.putExtra("SelectedPictNo", position);

...tips 実際にはこの処理で、IntentのBundleオブジェクトにデータが格納されている。

Untitled Diagram.jpg

移動先ではonCreateが起動する。

起動する側はインテントがあるのでgetしてくる。

遷移後の画面.java

// 遷移元から Intent を取得する。
Intent intent = getIntent();
// データの入っている extras を取得しに行く
Bundle extras = intent.getExtras();

// 何も入っていない場合はnullとなるので、validation check
if ( extras != null ){
    selectedPictNo = extras.getInt(key);
    selectedPictName = extras.getString(key);
}

解説

起動先アクティビティでデータをうけとるには以下の手順をとる

  1. Intentオブジェクトを取得 Intent intent = getIntent();
  2. Bundleオブジェクトを取得 Bundle extras = intent.getExtras();
  3. BundleオブジェクトのnullCheckを実施 if ( extras != null ) {/*処理*/}
  4. Bundleオブジェクトから、extras.get○○(key)メソッドを使用し、データを取得

tips

String selectedPictName = intent.getStringExtra("selectedPictName");

上記のように、Intentオブジェクトから直接取得する方法もある。

ただし第二引数として初期値を記述しないとだめなことがほとんど(NullPointerException回避のため)

`String selectedPictNo = intent.getStringExtra("selectedPictName", "初期STR");

6
3
0

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
6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?