使用接口通过两个活动传递数据

我必须将大量数据从“活动 1”传递到“活动 2”。这些数据被浓缩在一个 POJO 上,它本身有很多子类。


所以,我想我需要通过一个接口传递这些数据,这是因为我需要使用以前的数据来调用 Web 服务。但是在到达网络服务的那一刻,数据是空的。


实际上这是我的代码,但不起作用:


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

  }


慕妹3146593
浏览 69回答 1
1回答

当年话下

您需要使用意图 putExtra()方法和Serializable/或Parcelable以便将一些数据从一个活动发送到另一个活动。实际上,在您的情况下,您必须让您的myObjectToSend类实现Serializable或Parcelable然后在putExtra()方法的帮助下传递它。在第一个活动中:intent.putExtra("KEY", myObjectToSend);这KEY可以是在 SecondActivity 中获取此对象的常量。在 SecondActivityonCreate()方法中:if (savedInstanceState == null) {    Bundle extras = getIntent().getExtras();    if(extras == null) {        yourObjectToReceive = null;    } else {        yourObjectToReceive = (YourObjectToReceiveClass) extras.getSerializable("KEY");    }} else {    yourObjectToReceive = (YourObjectToReceiveClass)savedInstanceState.getSerializable("KEY");}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java