2017年3月3日金曜日

Activity間のデータ受け渡しについて

こんにちは。

Activityを起動するには、以下のようにします。


1
2
Intent intent = new Intent(this, OtherActivity.class);
startActivity(intent);


引数を渡したい場合は、以下のようにします。


1
2
3
Intent intent = new Intent(this, OtherActivity.class);
intent.putExtra("flag", true);
startActivity(intent);


起動したActivity側で、引数を取り出します。


1
2
3
4
5
Intent intent = getIntent();
Bundle args = intent.getExtras();
if (args != null) {
    flag = args.getBoolean("flag", false);
}


戻り値を受け取りたい場合は、起動を以下のようにします。


1
2
Intent intent = new Intent(this, OtherActivity.class);
startActivityForResult(intent, REQUEST_CODE);


REQUEST_CODEは、適当なint型の値です。そして、起動されたActivityで戻り値を設定します。


1
2
setResult(RESULT_OK);
finish();


呼び出し側の受け取りです。


1
2
3
4
5
6
7
8
9
10
11
12
13
14
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    switch (requestCode) {
        case REQUEST_CODE: {
            if (resultCode == RESULT_OK) {
                // 処理
            }
            break;
        }
        default:
            break;
    }
}


この記事を書きながら気づいたのですが、setResultには、Intentを引数に持つものもあるようです。色々な値を戻せそうです。


0 件のコメント:

コメントを投稿