Как я могу определить, активизилась ли активность после нажатия кнопки "Назад" из дочерней активности и как я могу выполнить какой-то код в это время?
Как определить, вернулся ли он из детской активности?
Ответ 1
Метод, который вы ищете, может быть методом onResume, который вы можете реализовать в своем классе мамы;). Вы должны знать, что onResume также называется первым при запуске любой активности. Посмотрите на жизненный цикл деятельности: http://developer.android.com/images/activity_lifecycle.png
Привет,
Ответ 2
Одной из возможностей было бы начать вашу дочернюю деятельность с помощью startActivityForResult()
и реализовать onActivityResult()
, который вызывается при возврате из дочерней активности.
Ответ 3
Ответ наjs правильный, но вот какой-то отлаженный код.
Объявите код запроса как константу в верхней части вашей активности:
public static final int OPEN_NEW_ACTIVITY = 123456;
Поместите это, когда вы начнете новое действие:
Intent intent = new Intent(this, NewActivity.class);
startActivityForResult(intent, OPEN_NEW_ACTIVITY);
Сделайте что-нибудь, когда действие будет завершено. Документация предполагает, что вы используете resultCode
, но в зависимости от ситуации ваш результат может быть RESULT_OK
или RESULT_CANCELED
при нажатии кнопки. Поэтому я бы отказался.
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == OPEN_NEW_ACTIVITY) {
// Execute your code on back here
// ....
}
}
По какой-то причине у меня возникли проблемы при помещении этого фрагмента в фрагмент. Поэтому вам нужно будет поместить его в Activity.
Ответ 4
Вы также можете переопределить метод onBackPressed() и метод onOptionsItemSelected() и поместить туда некоторую логику. Например, я помещал это в свой BaseActivity, который все остальные действия распространяются от:
@Override
public void onBackPressed() {
// your logic
super.onBackPressed();
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
// your logic
}
return super.onOptionsItemSelected(item);
}