我必須將大量數據從“活動 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 }}
1 回答

當年話下
TA貢獻1890條經驗 獲得超9個贊
您需要使用意圖 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");
}
添加回答
舉報
0/150
提交
取消