Попробуйте использовать startActivityForResult
.
Прочитайте документы из официальных Документов для разработчиков Android
По сути, вы должны передать данные через объекты, называемые Intent
s, например (в Kotlin):
В вашем первом занятии:
private fun goToSelectDateActivity() {
val requestCode =324
val intent = Intent(this, CalendarActivity::class.java)
startActivityForResult(intent, requestCode)
}
В вашем втором занятии
private fun passSelectedDateToPreviousActivity(selectedDate: Date) {
val data = Intent()
data.putExtra("DATE", selectedDate.toString());
setResult(Activity.RESULT_OK, data);
finish()
}
Возвращение к первому занятию override
метод onActivityResult
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
if(resultCode != Activity.RESULT_OK) return
when(requestCode) {
324 -> { yourTextView.text = data.getStringExtra("DATE"); }
// Other result codes
else -> {}
}
}
Эти фрагменты являются очень быстрыми и грязными фрагментами. Я бы предложил, например, иметь requestCode
в качестве статической переменной в Java или внутри атрибута объекта-компаньона для Activity в Kotlin.
Эквивалент Java будет
В вашем первом занятии:
private void goToSelectDateActivity() {
int requestCode =324;
Intent intent = new Intent(this, CalendarActivity.getClass());
startActivityForResult(intent, requestCode);
}
Во втором занятии
private void passSelectedDateToPreviousActivity(Date selectedDate) {
Intent data = new Intent();
data.putExtra("DATE", selectedDate.toString());
setResult(Activity.RESULT_OK, data);
finish();
}
Вернитесь в свое первое занятие override
метод onActivityResult
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if(resultCode != Activity.RESULT_OK) return;
switch(requestCode) {
case 324:
yourTextView.setText(data.getStringExtra("DATE"));
break;
// Other result codes
default: break;
}
}