ジャンル不定の日記です。

アクティビティ間でのデータ受け渡し

引き続きAndroidのアプリ開発。
今回はアクティビティ間でのデータ受け渡し。

ググったら、android.app.Applicationはアプリ終了まで維持されるので、このクラスを拡張してデータの受け渡しに使うという例が多いようなんだが、
これもサブクラスを作らなければならない方法と思うんで、共感できないやり方。


他の方法として、別のアクティビティを開始する際は
startActivity(Intent);
と、Intentを起動させる感じになるが、
Intentには
intent.putExtra("key",value);
の様な感じで追加データを記録できる。
わざわざ受け渡し用の機能を用意してくれてるんだから、これ使ってデータの受け渡しをするのが基本でしょ。
valueには様々な型を記録できるように用意されており、
"key"とvalueの組み合わせのMapとして扱えるぽい。

Intent intent=new Intent(MainActivity.this,SubActivity.class);
intent.putExtra("key",value);
startActivity(intent);
こんな感じで別のアクティビティを起動する。

SubActivity側でのデータ受け取りは、
Intent intent=getIntent();
でIntentが取得できる。

putExtraで記録したデータは型によって取得用のメソッドが異なるが、
intent.getIntExtra("key",0);
Int型ならgetIntExtra()で取得できる。
getIntExtraの1番目の引数はMapのキーだが、
2番目の引数は取得できない場合?のデフォルト値。


受け渡し方法自体は難しくないんだが、別のアクティビティの起動はイベント経由になると思うが、
元のアクティビティの処理をonCreateに書くと思うから、イベントリスナと別メソッドになるので、
別のアクティビティに渡す以前に、元のアクティビティ内でローカル変数のスコープが面倒な感じ。

しかし、ググッて出てくる解説サイトが糞な書き方してる人ばっかで困る。
ソースファイル数やコード量が多くなる書き方してる説明が多すぎ。