다음 질문을 해결하려면 약간의 도움이 필요합니다.GetSerializableExtra null 반환
두 개의 활동 A와 B가 있습니다. 활동 A는 결과 B를 시작하고 B는 직렬화 가능 객체 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
}
}
}
: 활동 A가 B로부터 전송 된 데이터를 가져
...
ExpensePacket packet = new ExpensePacket();
...
Intent returnIntent = new Intent();
returnIntent.putExtra(MainActivity.PACKET_INTENT,packet);
setResult(RESULT_OK,returnIntent);
finish();
포인트 : (A)에 데이터를 전송
...
Intent intent = new Intent(MainActivity.this, ExpenseActivity.class);
startActivityForResult(intent, EXPENSE_RESULT);
...
활동 B 내 직렬화 가능 객체, 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 포인터 인 이유를 알아낼 수 있습니다. , 대신 getIntent() 메소드의, 텐트 "데이터"매개 변수를 사용해야합니다 당신의 onActivityResult를() 메서드를
:
데이터가 'null'인 코드는 어디에 있습니까? –
코드 디버깅 나는 onActivityResult 메서드의 변수 결과가 항상 null이라는 것을 알았습니다. –
그리고'A '는 실제로'MainActivity'라고 불리우나요? 나는 onActivityResult()의'PACKET_INTENT'가'B'의'MainActivity.PACKET_INTENT'와 똑같은지 확인해달라고 요청합니다. –