【发布时间】:2012-09-28 06:39:13
【问题描述】:
我需要一点帮助来解决以下问题。
我有两个活动,A 和 B。活动 A 为结果启动 B,B 向 A 发送回一个可序列化的对象。
活动a开始活动B:
...
Intent intent = new Intent(MainActivity.this, ExpenseActivity.class);
startActivityForResult(intent, EXPENSE_RESULT);
...
活动 B 向 A 发送数据:
...
ExpensePacket packet = new ExpensePacket();
...
Intent returnIntent = new Intent();
returnIntent.putExtra(MainActivity.PACKET_INTENT,packet);
setResult(RESULT_OK,returnIntent);
finish();
Activity 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
}
}
}
我的 Serializable 对象,从 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? -
调试代码我注意到onActivityResult方法中的变量result始终为null。
-
A真的叫MainActivity吗?我要求确保onActivityResult()中的PACKET_INTENT与B中的MainActivity.PACKET_INTENT相同。 -
我是一个 Android 菜鸟,最近才实现了类似的东西。我认为您在此处发布的代码没有任何问题。在调用
putExtra()之前,您是否检查过packet是否为非空? -
@rodolfogomesdias,不要使用
MainActivity.PACKET_INTENT,使用String,类似于“mySerializedObject”
标签: java android serialization android-activity