每次我从下面的AcitvityResult函数中选择一个。我的活动刷新和先前从此活动设置的数据将重置为空。通过分析,我认为它与onActivityResult有关。我的问题是可以防止活动结果刷新活动,因为我不想放弃以前设置的数据。这是我的onactivity结果函数。
更新 ClassA.class
final Button btnValidate = (Button) findViewById(R.id.btnValidate);
btnValidate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mSelectedCalendar != null) {
final Intent intent = new Intent();
intent.setAction(String.valueOf(Utils
.CalenderToInteger(mSelectedCalendar)));
setResult(RESULT_OK, intent);
} else {
setResult(RESULT_CANCELED);
}
finish();
}
});
ClassB.class
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_DEPARTURE_DATE && resultCode == RESULT_OK) {
Calendar cal = Utils.IntegerToCalendar(Integer.parseInt(data
.getAction()));
Utils.setDate(mTxtDepartureDate, cal.get(Calendar.YEAR),
cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH));
if (mTxtReturnDate.getTag() != null) {
Date departureDate = (Date) mTxtDepartureDate.getTag();
Calendar cal2 = Calendar.getInstance();
cal2.setTime(departureDate);
Utils.SetDayElapsed(cal2, 7);
Utils.setDate(mTxtReturnDate, cal2.get(Calendar.YEAR),
cal2.get(Calendar.MONTH),
cal2.get(Calendar.DAY_OF_MONTH));
}
} else if (requestCode == REQUEST_RETURN_DATE
&& resultCode == RESULT_OK) {
Calendar cal = Utils.IntegerToCalendar(Integer.parseInt(data
.getAction()));
Utils.setDate(mTxtReturnDate, cal.get(Calendar.YEAR),
cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH));
}
}
答案 0 :(得分:0)
我可以猜到2个senarios:
致电finish()
时,您致电startActivityForResult()
,
基本活动(以及有用的信息)可能是
破坏。
您可能已经创建了第一个活动
FLAG_ACTIVITY_NO_HISTORY
。如果是这种情况,活动就会得到
一旦被带到,就会被摧毁(连同有用的信息)
后面。
在这两种情况下,您都可以通过向第一个活动的onDestroy()
中的活动添加日志来检查以前的活动是否已被销毁。