In your Activity hosting those fragments, define a variable,
public class HomeActivity{
public User mUser;
...
}
Now, In your fragment, when you get response from your Api, initialise variable User in Activity as below:
@Override
public void onClick(View view) {
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET, getString(R.string.RESTAPI_URL), null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.d("Response: ",response.toString());
Gson gson = new Gson();
User user = gson.fromJson(String.valueOf(response),User.class);
// initialise User variable in Home Activity
((HomeActivity)getActivity()).mUser = user;
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d("ErrorResponse: ",error.toString());
}
});
RequestQueue requestQueue = Volley.newRequestQueue(getActivity());
requestQueue.add(jsonObjectRequest);
}
Assuming, your User class implements Parcelable interface, and if not, then just make that class Parcelable. This works same as Serializable in Java, but Parcelable is optimized for Android.
Lastly, when you load second fragment, simply pass User object to second Fragment as below:
SecondFragment secondFragment = new SecondFragment();
Bundle bundle = new Bundle();
bundle.putParcelable("ARG_USER", user);
secondFragment.setArguments(bundle);
//...code for loading second fragment