Как определить, вернулся ли он из детской активности?

Как я могу определить, активизилась ли активность после нажатия кнопки "Назад" из дочерней активности и как я могу выполнить какой-то код в это время?

Ответ 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);
}