在托管这些片段的 Activity 中,定义一个变量,
public class HomeActivity{
public User mUser;
...
}
现在,在您的片段中,当您从 Api 获得响应时,在 Activity 中初始化变量 User,如下所示:
@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);
}
假设您的User 类实现了 Parcelable 接口,如果没有,则将该类设为 Parcelable。这与 Java 中的 Serializable 相同,但 Parcelable 针对 Android 进行了优化。
最后,当您加载第二个片段时,只需将用户对象传递给第二个片段,如下所示:
SecondFragment secondFragment = new SecondFragment();
Bundle bundle = new Bundle();
bundle.putParcelable("ARG_USER", user);
secondFragment.setArguments(bundle);
//...code for loading second fragment