0

以下の 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.クラス

@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));
    }
}
4

1 に答える 1

0

私は2つのシナリオを推測できます:

  1. finish()呼び出すstartActivityForResult()と、ベース アクティビティが (有用な情報と共に) 破棄された可能性があります。

  2. で最初のアクティビティを作成した可能性があります FLAG_ACTIVITY_NO_HISTORY。その場合、アクティビティが取り除かれると、アクティビティは (有用な情報と共に) 破棄されます。

どちらの場合も、最初のアクティビティのアクティビティにログを追加することで、前のアクティビティが破棄されたかどうかを確認できますonDestroy()

于 2013-06-19T08:06:01.037 に答える