我需要一点帮助来解决以下问题。
我有两个活动,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();
活动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的数据是空指针。
发布于 2012-10-08 17:56:42
我想我发现了你的错误:
在onActivityResult()方法中,应该使用Intent "data“参数,而不是getIntent()方法。getIntent()返回用于调用活动的意图,而不是由startActivityForResult()调用的活动返回的意图。
结果意图是在onActivityResult()中传递的"data“参数。你应该从那里恢复你的Serializable对象。
我用你的代码做了一个小项目,可以重现你的问题。使用数据参数更改getIntent()解决了这个问题。
还有一件事:我认为您在ExpensePacket.getMonthYear()中有另一个错误,因为您构造了字符串returnString,但返回了其他内容。只需检查这一部分,以确保您正在做您想做的事情。
https://stackoverflow.com/questions/12774499
复制相似问题