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