LoginSignup
1
1

More than 5 years have passed since last update.

ActivityGroupの子からstartActivityForResultしても結果が受け取れない

Last updated at Posted at 2012-06-11

ActivityGroup内で表示している子のActivityから、

ChildActivity.java
startActivityForResult(intent);

とかしても、onActivityResultが呼ばれない。親のActivityGroup#onActivityResultに来ている気配もない。

【対処法】
親のActivityGroupからstartActivityForResultを呼ぶと、親のonActivityResultには来るので、そこから子Activityにdispatchしてやる必要がある。
親から呼んでもらえるように、子のonActivityResultはpublicにしてやる。

ChildActivity.java

@Override
public void startActivityForResult(Intent intent, int requestCode) {
    getParent().startActivityForResult(intent, requestCode);
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
){
  // 処理
}
ParentGroup.java
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  Activity child = getLocalActivityManager().getCurrentActivity();
  if( child instance of ChildActivity ){
     ((ChildActivity)child).onActivityResult(requestCode,resultCode,data);
  }
}
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1