Mr Roshan Pawar Mr Roshan Pawar - 4 months ago 92
Android Question

startActivityForResult() from a Fragment and finishing child Activity, doesn't call onActivityResult() in Fragment

FirstActivity.Java
has a
FragmentA.Java
which calls
startActivityForResult()
.
SecondActivity.Java
call
finish()
but
onActivityResult
never get called which is
written in
FragmentA.Java
.

FragmentA.Java
code:

@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
// some code
Intent i = new Intent(getActivity(), SecondActivity.class);
i.putExtra("helloString", helloString);
getActivity().startActivityForResult(i, 1);
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
getActivity();
if(requestCode == 1 && resultCode == Activity.RESULT_OK) {
//some code
}
}


SecondActivity.Java
code:

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//some code
Intent returnIntent = new Intent();
returnIntent.putExtra("result", result);

setResult(Activity.RESULT_OK,returnIntent);
finish();
}


I have tried debugging the code , but
onAcitvityResult()
never get called.

Thanks in advance.

Answer

You must write onActivityResult() in your FirstActivity.Java as follows

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
   super.onActivityResult(requestCode, resultCode, data);
}

So this will call your fragment's onActivityResult()

Edit: the solution is to replace getActivity().startActivityForResult(i, 1); with startActivityForResult(i, 1);