вернуться назад и пропустить одно действие

Вот мой случай, предполагающий, что у меня есть эти действия A -> B -> C -> D

Я хочу вернуться к A, когда пользователь нажимает кнопку «Назад», когда он находится в D, но также я хочу вернуться к B, когда пользователь нажимает кнопку «Назад» C

Я думал вызвать финиш, когда я иду в C из B, но в этом случае я не могу вернуться в B, если я нажму на заднюю часть C

как я могу решить эту проблему, не вызывая onBackPressed для двух действий?

спасибо


person begiPass    schedule 18.12.2013    source источник
comment
stackoverflow.com/questions/10202903/   -  person Sagar Surani    schedule 16.02.2016


Ответы (3)


Когда вы начинаете каждое действие, вам нужно будет использовать

startActivityForResult()

И затем есть система флагов, говорящих, кого останавливают, которые передаются обратно. Итак, действие Д:

timeToEnd() {
    setResult(RESULT_D_CLOSING);
    finish();
}

А потом в А, С, D

onActivityResult(int requestCode, int resultCode, Intent data) {
    switch(resultCode)
    case RESULT_D_CLOSING:
        // Close on upwards
        setResult(RESULT_D_CLOSING);
        finish();
    case ....
        // You get the idea
    }
}
person Neil Townsend    schedule 18.12.2013

Вы пытались использовать флаг FLAG_ACTIVITY_CLEAR_TOP в своем намерении (используется для запуска «A» из «D»)?

http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_CLEAR_TOP

Если установлено, и запускаемое действие уже выполняется в текущей задаче, то вместо запуска нового экземпляра этого действия все остальные действия поверх него будут закрыты, и это намерение будет доставлено в (сейчас на вверху) старая деятельность как новое намерение.

person nitesh goel    schedule 18.12.2013

У вас есть 2 варианта здесь. Вы можете либо запустить действия с startActivityForResult, а затем onBackPressed каждого действия передать флаг, который сообщает действию либо выйти, либо остаться открытым.

Другим вариантом было бы реализовать A, B, C, D как фрагменты в одном и том же действии, помещая все фрагменты в задний стек по мере их открытия, а затем onBackPress вы можете программно пройтись по заднему стеку, чтобы увидеть, что вы хотите сделать.

person Ali    schedule 18.12.2013