【问题标题】:Pass data through two activities using interface使用接口通过两个活动传递数据
【发布时间】:2019-05-31 22:33:39
【问题描述】:

我必须将大量数据从“活动 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
  }
} 

【问题讨论】:

    标签: java android performance android-activity interface


    【解决方案1】:

    您需要使用intent putExtra() 方法和SerializableParcelable 才能将一些数据从一个活动发送到另一个活动。 实际上,在您的情况下,您必须使您的 myObjectToSend 类实现 SerializableParcelable 然后在 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");
    }
    

    【讨论】:

      猜你喜欢
      • 2015-04-21
      • 1970-01-01
      • 1970-01-01
      • 2018-08-21
      • 2021-02-22
      • 1970-01-01
      • 1970-01-01
      • 2016-09-04
      • 2020-12-19
      相关资源
      最近更新 更多