java - 使用接口(interface)通过两个 Activity 传递数据

标签 java android performance android-activity interface

我必须将大量数据从“Activity 1”传递到“Activity 2”。这些数据被压缩在 POJO 上,其本身有很多子类。

所以,我想我需要通过接口(interface)传递这些数据,因为我需要使用以前的数据来调用 Web 服务。但在到达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
  }
} 

最佳答案

您需要使用intent putExtra() 方法和 SerializableParcelable为了将一些数据从一个 Activity 发送到另一个 Activity 。 实际上,在您的情况下,您必须使您的 myObjectToSend 类实现 SerializableParcelable,然后在 putExtra()< 的帮助下传递它 方法。

在第一个 Activity 中:

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");
}

关于java - 使用接口(interface)通过两个 Activity 传递数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56402381/

相关文章:

java - 如何从 Jersey 响应中保存文件?

java - 无法找到显式 Activity 类 {};你有没有在你的 AndroidManifest.xml 中声明这个 Activity

java - Java中,连接mysql,Class.forName是什么意思?

java - 使用 Ajax 和 JSP 进行多选的级联下拉列表

java - android中的EBADF错误文件号错误

android - Onfling 和 OnTouch 不能一起工作

Android - 如何创建类似 Google Inbox 的个人资料 View ?

Android - 避免内存泄漏的良好实践

java - 我应该在 Android 上支持对象池而不是新对象吗?

mysql - 在将其分解为多个表之前,MySQL 表应该有多大?