我必须将大量数据从“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()
方法和 Serializable
或Parcelable
为了将一些数据从一个 Activity 发送到另一个 Activity 。
实际上,在您的情况下,您必须使您的 myObjectToSend
类实现 Serializable
或 Parcelable
,然后在 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/