调用OnActivityResult后,Android TextBox会刷新

时间:2013-06-19 07:21:37

标签: android

每次我从下面的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));
    }
}

1 个答案:

答案 0 :(得分:0)

我可以猜到2个senarios:

  1. 致电finish()时,您致电startActivityForResult(), 基本活动(以及有用的信息)可能是 破坏。

  2. 您可能已经创建了第一个活动 FLAG_ACTIVITY_NO_HISTORY。如果是这种情况,活动就会得到 一旦被带到,就会被摧毁(连同有用的信息) 后面。

  3. 在这两种情况下,您都可以通过向第一个活动的onDestroy()中的活动添加日志来检查以前的活动是否已被销毁。