2013-12-18 3 views
1

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

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

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

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

благодаря

+0

http://stackoverflow.com/questions/10202903/skip-going-back-to-direct-parent-activity-when-pressed-back –

ответ

0

При запуске каждого действия, вам нужно будет использовать

startActivityForResult() 

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

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 
    } 
} 
0

вы пробовали, используя флаг FLAG_ACTIVITY_CLEAR_TOP в своих намерениях (используется для запуска "А" от "D")?

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

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

+0

Это работает? –

0

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

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

Смежные вопросы