Отправить объект в Bundle Android

У меня возникли некоторые проблемы при попытке передать объект, полученный из моего API, в конкретный фрагмент, этот объект является json из API, и он динамический, он может возвращать json как:

{ "number1" : "45545455", "number2" : "58454556", "email1" : "test@test.com", "email2" : "test2@test2.com", "name" : "Fett Shop", "description" : "Big sales" }

Этот json всегда меняется, поэтому он может прийти без номера 2 или электронной почты 2, или в качестве другого примера можно использовать третий или четвертый адрес электронной почты или номер. В моем методе OnResponse я получаю ответ и сохраняю его в объекте:

            @Override
        public void onResponse(Call<ServerResponse> call, retrofit2.Response<ServerResponse> response) {
            ServerResponse resp = response.body();


            if(resp.getResult().equals(Constants.SUCCESS)) {

                Object test2 = resp.getResponse();
                //In this part i was trying passing the object with Bundle
                goToContact();
            }
        }

Я читал, чтобы передать в Bundle создание класса с Serialized или Parcelable, но я понятия не имею, как передать этот динамический объект другому фрагменту. Я ценю любую помощь!

3 ответа

@Override
        public void onResponse(Call<ServerResponse> call, retrofit2.Response<ServerResponse> response) {
            ServerResponse resp = response.body();


            if(resp.getResult().equals(Constants.SUCCESS)) {

                Object test2 = resp.getResponse();
                Intent intent = new Intent("Calss A","Class B);
                intent.putExtra("response", test2 );
                goToContact();
            }
        }

Для получения объекта из комплекта

getIntent().getSerializableExtra("response");

Объекты можно передавать между фрагментом и операциями, делая класс модели Serializable или Parcelable.

@Override
        public void onResponse(Call<ServerResponse> call, retrofit2.Response<ServerResponse> response) {
            ServerResponse resp = response.body();


            if(resp.getResult().equals(Constants.SUCCESS)) {
                Fragment fragment = new Fragment();
                Object test2 = resp.getResponse();
                Bundle bundle = new Bundle();
                bundle.putParcelable("Object", test2 );
                fragment.setArguments(bundle); 
            }
        }

Чтобы получить его из пакета в другом фрагменте, используйте функцию onCreate:

Object newObject = (NewObject) bundle.getParcelable("Object");

вы можете передать один объект ответа в комплекте.

      @Override
    public void onResponse(Call<ServerResponse> call, retrofit2.Response<ServerResponse> response) {
        ServerResponse resp = response.body();


        if(resp.getResult().equals(Constants.SUCCESS)) {

            Object test2 = resp.getResponse();
            //In this part i was trying passing the object with Bundle
            Bundle bundle = new Bundle();
            bundle.putString("number1", test2.getString("number1");
            bundle.putString("number2", test2.getString("number2");
            bundle.putString("email1", test2.getString("email1");
            bundle.putString("email2", test2.getString("email2");
            goToContact();
        }
    }

не передавать пакет во фрагмент.

YourFragment newFragment = новый YourFragment(); новыйFragment.setArguments (комплект);

получить данные, переданные во фрагменте.

      Bundle b = getArguments();
String number1 = b.getString("number1");
String number2 = b.getString("number2");
String email1 = b.getString("email1");
String email2 = b.getString("email2");
Другие вопросы по тегам