Java 使用接口通过两个活动传递数据
我必须将大量数据从“活动1”传递到“活动2”。这些数据在一个本身有很多子类的POJO上压缩 所以,我想我需要通过一个接口来传递这些数据,这是因为我需要使用以前的数据来调用web服务。但是在到达web服务时,数据是空的 实际上,这是我的代码,但不起作用:Java 使用接口通过两个活动传递数据,java,android,performance,android-activity,interface,Java,Android,Performance,Android Activity,Interface,我必须将大量数据从“活动1”传递到“活动2”。这些数据在一个本身有很多子类的POJO上压缩 所以,我想我需要通过一个接口来传递这些数据,这是因为我需要使用以前的数据来调用web服务。但是在到达web服务时,数据是空的 实际上,这是我的代码,但不起作用: public class FirstActivity extends AppCompatActivity { protected void onCreate(Bundle savedInstanceState) { ....
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
}
}
您需要使用putExtra()
方法和或将一些数据从一个活动发送到另一个活动。
实际上,在您的情况下,您必须使您的myObjectToSend
类实现可序列化
或可打包
,然后借助putExtra()
方法传递它
在第一项活动中:
intent.putExtra("KEY", myObjectToSend);
哪个键可以是在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");
}