requestCode; int resultCode; } public class MyActivity extends Activity { PublishSubject<IntentHolder> mActivityResultsSubject; @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); mActivityResultsSubject.onNext(new IntentHolder(data, requestCode, resultCode)); } } // not a fragment nor an activity class AnotherClass { Observable<IntentHolder> activityResultsEvents; void myMethod() { activityResultsEvents.subscribe(intentHolder -> { onResult(intentHolder.getRequestCode(), intentHolder.getData()); If(intentHolder.getRequestCode() == getRequestCode()) { // do something }}); } }