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.
Don't call
finish()
inonCreate()
method then it works fine.You must write
onActivityResult()
in yourFirstActivity.Java
as followsSo this will call your fragment's
onActivityResult()
Edit: the solution is to replace
getActivity().startActivityForResult(i, 1);
withstartActivityForResult(i, 1);
call your
onActivityresult()
in ParentActivity .