Передайте данные через два действия, используя интерфейс - PullRequest
0 голосов
/ 01 июня 2019

Я должен передать много данных из «Задания 1» в «Задание 2». Эти данные сжимаются в POJO с большим количеством подклассов.

Итак, я решил, что мне нужно передать эти данные через интерфейс, потому что мне нужно использовать предыдущие данные для вызова веб-службы. Но в момент достижения веб-службы данные становятся нулевыми.

На самом деле это мой код, но он не работает:

public class FirstActivity extends AppCompatActivity {
  protected void onCreate(Bundle savedInstanceState) {
      ....
  }

  @Override
  public void onClick(View v) {
    switch (v.getId()) {
        case R.id.continue_button:
            continueToNewScreen();
            break;
    }
  }

  private void continueToNewScreen() {
    if (infoResult != null && infoResult.size() > 0) {
        eventsListener = new SecondActivity();
        eventsListener.callback(myObjectToSend);
        //send data to the next activity and start it.
        Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
        startActivity(intent);
    }
  }
}


public class SecondActivity extends AppCompatActivity implements EventsListener {
      protected void onCreate(Bundle savedInstanceState) {
          configurateView();
          manageEvent();
      }

    @Override
    public void callback(InfoEvent event) {
        Log.d("callback", "callback: ");
        //here the object is informed
        infoEvent = event;

    }

  private void manageEvent() {
    //call web service with the info from the last activity
    //here the object is null
  }
} 

1 Ответ

1 голос
/ 01 июня 2019

Вам необходимо использовать метод intent putExtra() и Serializable или Parcelable, чтобы отправлять некоторые данные из одного действия в другое.На самом деле в вашем случае вы должны сделать класс myObjectToSend для реализации Serializable или Parcelable, а затем передать его с помощью метода putExtra().

В FirstActivity:

intent.putExtra("KEY", myObjectToSend);

который KEY может быть константой для получения этого объекта в SecondActivity.

в SecondActivity onCreate() метод:

if (savedInstanceState == null) {
    Bundle extras = getIntent().getExtras();
    if(extras == null) {
        yourObjectToReceive = null;
    } else {
        yourObjectToReceive = (YourObjectToReceiveClass) extras.getSerializable("KEY");
    }
} else {
    yourObjectToReceive = (YourObjectToReceiveClass)savedInstanceState.getSerializable("KEY");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...