Joe
Joe

Reputation: 42155

Forwarding activity result to parent, with singleTop launch mode

I have two activities: a MainListActivity, and a DetailViewActivity. DetailViewActivity is set with android:launchMode="singleTop".

When clicking an item in the "main list" activity, it launches the "detail view" activity via:

startActivityForResult(detailIntent, REQUEST_CODE_DETAIL);

If I then call setResult(RESULT_OK, resultData); and finish(); from within the Detail activity, that resultData is received by the "main list" activity's onActivityResult(..) method correctly.

However, if I implement a "see previous"/"see next" type of navigation within the Detail activity, and implement it using singleTop, that result no longer gets sent back to the initial activity:

Intent nextItemIntent = this.createIntent(nextId);
nextItemIntent.setFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
startActivity(nextItemIntent);
// at this point, my DetailActivity's onNewIntent() method is called, and the new data is loaded properly

But from here, when I call setResult(..) and finish(), my MainList activity never receives the new/updated result.

Anyone know what I'm doing wrong?

Upvotes: 2

Views: 6123

Answers (1)

Joe
Joe

Reputation: 42155

Bah... my mistake. Looks like the problem was FLAG_ACTIVITY_FORWARD_RESULT. Apparently that flag is not needed when using FLAG_ACTIVITY_SINGLE_TOP and onNewIntent(..).. So by setting FLAG_ACTIVITY_FORWARD_RESULT, I was actually telling Android to forward my result data one activity farther back on the stack (activity before MainListActivity).

I removed that flag, and it now works as expected:

Intent nextItemIntent = this.createIntent(nextId);
nextItemIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(nextItemIntent);

And all is well.

Upvotes: 5

Related Questions