2011年12月1日

【Android】Activity間でデータの受け渡しをする(1)


まずは、間隔が開きまして申し訳ございません。

Androidの開発において、Activityの動きを理解する事は重要です。

ActivityがUIの入出力、データ操作等を行いますが、
Activity間でデータを受け渡しする時はどうすれば良いのでしょうか?

そんな疑問の第1回目は親Activity→子Activityのデータのやりとりを解説します。



まず、親Activityと子Activityとは何なのか。
勝手に名付けましたが、呼び出し元と呼び出し先です。
'ParentActivity'と'ChildActivity'とします。

通常の呼び出し、終了プロセスは

ParentActivity.java

Intent intent = new Intent(ParentActivity.this, ChildActivity.class);
 startActivity(intent);

ChildActivity.java

finish();

でアクティビティ間を移動できます。

では、本題の親Activityから子Activityへのデータ渡しです。
'Hello World'という文字列を渡してみたいと思います。

ParentActivity.java

Intent intent = new Intent(ParentActivity.this, ChildActivity.class);
 intent.setAction(Intent.ACTION_VIEW);
 Bundle bundle = new Bundle();
 bundle.putString("key", "Hello World");
 intent.putExtras(bundle);
 startActivity(intent);

随分長くなってしまいました。
bundle.putString()でデータを格納します。
putFloat(), putInt()等ありますので、データにあわせてお使いください。

では、受け取り側の実装です。

ChildActivity.java

Bundle bundle = getIntent().getExtras();
 String hello_world = bundle.getString("key");

でhello_worldというString型の変数に"Hello World"という文字列が入りました。

両方で"key"を使っていますが、これが、受け渡し前と後の鍵になりまして、
この鍵に紐づけてデータを渡す、紐づいたデータを受け取るというやり方をします。

次回は子Activityから親Activityへの解説をいたします。

同じようなコードを使用しているOneClickHomeもお願いします。