ちょっとはまったのでメモ。
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
コメントを残す