我需要一點幫助來解決以下問題。GetSerializableExtra返回null
我有兩個活動,A和B.活動A開始B爲結果,B發回A到一個可序列化的對象。
活性的起始活性B:
...
Intent intent = new Intent(MainActivity.this, ExpenseActivity.class);
startActivityForResult(intent, EXPENSE_RESULT);
...
活動B將數據發送到:
...
ExpensePacket packet = new ExpensePacket();
...
Intent returnIntent = new Intent();
returnIntent.putExtra(MainActivity.PACKET_INTENT,packet);
setResult(RESULT_OK,returnIntent);
finish();
點,其中的活性A獲得從B發送的數據:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == EXPENSE_RESULT) {
if(resultCode == RESULT_OK){
ExpensePacket result = (ExpensePacket)getIntent().getSerializableExtra(PACKET_INTENT);
wallet.Add(result);
PopulateList();
}
else{
//Write your code otherwise
}
}
}
我的可序列化對象,從B發送到A的那個對象:
class ExpensePacket implements Serializable {
private static final long serialVersionUID = 1L;
private Calendar calendar;
public void SetCalendar(Calendar aCalendar){
calendar = aCalendar;
}
public Calendar GetCalendar(){
return calendar;
}
public String GetMonthYear() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
sdf.format(calendar.getTime());
String returnString = "";
returnString += sdf.toString();
returnString += "/";
returnString += Functions.GetMonthName(calendar);
return sdf.toString();
}
}
有人可以幫我弄清楚爲什麼從B發送給A的數據是空指針。
哪裏顯示數據的代碼是'null'? –
Debbuging the code我注意到方法onActivityResult中的變量結果總是爲空。 –
並且'A'確實被稱爲'MainActivity'?我只是要求確保'onActivityResult()'中的'PACKET_INTENT'與'B'中的'MainActivity.PACKET_INTENT'相同。 –