onActivityResult()がコールされないと思ったら、ActivityGroupじゃない?[Android, onActivityResult()]

ちょっとはまったのでメモ。
Android開発で他のインテントを呼び出して戻ってくるコールバックの onActivityResult()が呼び出せない。orz..と思っていたら、ActivityGroupの子Activityだと呼び出して紅っぽい。

一旦親ActivityのstartActivityForResult()を呼び出して、親のonActivityResult()で受取り子ActivityのonActivityResult()を呼び出してうまくいきました。
親のアクティビティーで完全にハンドリングしないとダメっぽいです。


[子アクティビティー]
親インテントのstartActivityForResult()を実行。
[親アクティビティー]
onActivityResult()が呼び出される。(現在のアクティビティーは子アクティビティーのまま)
子アクティビティーのonActivityResult()を呼び出し
[子アクティビティー]
 onActivityResult()で情報受取り。

ソース

子アクティビティー側
※onActivityResult()は親から呼び出すので、
今回はとりいそぎ@Overrideじゃない&publicにしてます。

	private void hoge(){
		Intent intent = new Intent();
		intent.setType("image/*");
		intent.setAction(Intent.ACTION_GET_CONTENT);
		getParent().startActivityForResult(intent,101);
	}
	public void onActivityResult(int requestCode, int resultCode, Intent data) {
		//ここで処理をする
	}

親アクティビティー側

	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		if(requestCode == 101){
			ChildActivity child = (ChildActivity) getLocalActivityManager().getCurrentActivity();
			child.onActivityResult(requestCode,resultCode,data);
		}
	}

参考サイト:
http://stackoverflow.com/questions/4268178/startactivityforresult-from-activitygroup

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です