Закрыть активность с намерением. Андроид
Имеются 3 активности А > B > C; Далее хочу вернуться в активность В < C; с намерением выполнить перезагрузку В - onRefresh();
Пробовал так из С :
Intent intent = new Intent( C.this, B.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP );
intent.putExtra("EXIT", true);
startActivity(intent);
И в активности В onCreate:
if (getIntent().getBooleanExtra("EXIT", false)) {
onRefresh();
}
Но такой подход очищает и активность B.
Как вызвать onRefresh(); при закрытии активности C не очищая активность В?
Ответы (1 шт):
Думаю для этого подойдет onActivityResult()
Конкретно на вашем примере в активности В вызов активности С должен происходить как то так
Intent intent = new Intent(this, ActivityC.class);
..
startActivityForResult(intent, REQUEST_ACCESS_TYPE);
Так же в активности В должен быть переопределен метод onActivityResult
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode==REQUEST_ACCESS_TYPE) {
if(resultCode==RESULT_REFRESH) {
onRefresh();
}
} else {
super.onActivityResult(requestCode, resultCode, data);
}
}
И наконец в активности С перед ее закрытием мы посылаем RESULT_REFRESH - Активность С закрывается, а В в свою очередь остается прежней и получив RESULT_REFRESH выполнит onRefresh()
setResult(RESULT_REFRESH);
finish();
UPD
Так же можно куда то записывать boolean флаг для рефреша перед завершением активности С (например SharedPreferences или прости статическую переменную), а в активности В в методе onResume() смотреть если флаг true, то 'выключаем' его (false) и выполняем onRefresh()