2013-08-20 5 views
1

В моем проекте есть 4 действия и пользователи из активности. Перейдите в B после этого на C и D. Мне нужно создать кнопку в действии D, чтобы закрыть программу напрямую, потому что если пользователю нужно закрыть все (D -> C -> B -> A -> close) было бы недружелюбно.Создайте кнопку, чтобы закрыть программу

+0

вы можете использовать панель действий. при щелчке значка приложения перейдите на главный экран при нажатии кнопки «Назад» на выходе из дома. – Raghunandan

+1

смотрите здесь http://developer.android.com/design/patterns/navigation.html. – Raghunandan

+0

http: // stackoverflow.com/questions/2033914/quitting-an-application-is-that-frowned-on/2034238 # 2034238 – CommonsWare

ответ

2

Зарегистрируйте широковещательный приемник в каждом из действий, прислушиваясь к «закрыть все действия», когда нажата кнопка в последнем действии, отправьте эту широковещательную рассылку, поэтому весь регистр активности будет выполнять свой метод onReceive на передатчик вещания, и там все они будут завершены до тех пор, пока они будут зарегистрированы. Это, безусловно, будет делать трюк, хотя, честно говоря, это тихое исполнение, вероятность того, что вы делаете что-то неправильно в навигации, высока, возможно, фрагменты или вкладка лучше подходят для того, что вы пытаетесь, вместо создания такой стек деятельности ...

Надеется, что это помогает ...

С уважением!

0

Вы должны отменить onBackPressed() от каждого Activity и позвоните по номеру finish().

+0

Это не будет отличаться от поведения по умолчанию кнопки «Назад» – codeMagic

0

Предположим, что первое действие в вашем приложении называется ActivityMain. Предположительно, он будет самым старым в стеке.

Создайте намерение запустить ActivityMain с помощью флага FLAG_ACTIVITY_CLEAR_TOP. Задайте дополнительно в этом намерении указать, что это выход приложения, и вызовите функцию startActivity() с этим намерением. Это очистит стек и вернет вас на главную деятельность.

В ActivityMain call getIntent() затем проверьте, чтобы выходное приложение было добавочным. Если он установлен, завершите вызов().

2

Я думаю onActivityResult может быть лучше option.You мог закончить свою деятельность, если требуется задание завершается в противном случае просто отступиться от предыдущей операции

0

не столь элегантное решение:

Вместо вызова startActivity, вызов startActivityForResult, от A до D.

В действии D, когда ваша кнопка нажата, установите любой результат (скажем, Activity.RESULT_OK) и позвоните по номеру finish().

При каждом действии (от A до C) переопределите метод onActivityResult для проверки результата. Если результатом будет Activity.RESULT_OK, то вы получите тот же результат и снова вызовите finish().

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

0

Просто сделайте одно. В своей деятельности добавить переопределен метод OnPause

onPause(){ 
finish(); 
} 

Это закроет все ваши действия, как только вы нажмете назад от какой-либо деятельности.

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