2013-04-21 3 views
0

У меня есть три действия с меню. В меню можно переключать действия. Я взял «андроида: launchMode =" SingleInstance»в AndroidManifest для Остаюсь модификации на каждой деятельностиAndroid: Переключение действий по меню

------------------ 
|     | 
|     | 
|     | 
|  A   | 
|     | 
|     | 
|     | 
|     | 
|------------------| 
|##A##| B | C | 
------------------ 
     A Activity 

------------------ 
|     | 
|     | 
|     | 
|  B   | 
|     | 
|     | 
|     | 
|     | 
|------------------| 
| A |##B##| C | 
------------------ 
     B Activity 

------------------ 
|     | 
|     | 
|     | 
|  C   | 
|     | 
|     | 
|     | 
|     | 
|------------------| 
| A | B |##C## | 
------------------ 
     C Activity 

Это работа правильно Моя проблема заключается в том, что, когда я нажимаю на клавишу возврата, потому что я хочу, чтобы выйти.. , Я должен нажать три раза, чтобы закрыть приложение.

Я хочу исключить эту процедуру. Поэтому, когда я на A, B или C Activity, и я нажимаю клавишу «Назад», закройте все их. Как-то я хочу вернуться назад.

Я пытаюсь использовать информацию о Flags Например, как это:.

Intent intent=new Intent(this, B.class); 
    intent.setFlag(Intent.FLAG_ACTIVITY_TASK_ON_HOME); 
    startActivity(intent); 

С этим у меня две проблемы. Он просто поддерживает API 11 или верхний, и это не закрывает другую активность. (Когда я запускаю снова, я вижу, другие мероприятия модификаций остались)
Я знаю * Фрагмент * s, и это было бы намного проще с этим, но я должен нужно решить без * Фрагмент * s. Извините за мой плохой английский.

+0

Я бы порекомендовал вам использовать Фрагменты, не будет никаких проблем, если вы их используете. – Egor

ответ

0

Вы уже знаете, что Фрагменты намного проще, и рекомендуется использовать фрагменты. Но если вы хотите сделать это таким образом ... перед каждым новым действием вы начинаете call finish();

как

Intent intent=new Intent(this, B.class); 
startActivity(intent); 
finish(); 

Это завершит активность A и B. начать активность Таким образом, если вы нажмете обратно активность B ваше приложение будет закрыто.

+0

да, но я потерял модификации, когда я переключаю деятельность –

+0

какие модификации? – Sharj

+0

, если я назову финиш, действие будет закрыто и сбросить состояние. Я теряю данные, например. из EditText, который пользователь заполнил. Там будут сложные контроллеры, поэтому я не хочу ничего экономить. –

0

Единственное, что приходит мне на ум - это старое программирование стиля с активными вкладками.

Вот пример http://www.androidhive.info/2011/08/android-tab-layout-tutorial/

Если вы не хотите вкладки, чтобы быть видимыми его легко скрыть их полностью.

Но лично я бы предложил фрагменты.

0

Что вы хотите пользовательский стек Back активность:

// Creates an explicit intent for the top activity that will be opened (the map) 
Intent resultIntent = new Intent(context, <your_activity>.class); 
resultIntent.putExtras(extras); 

// The stack builder object will contain an artificial back stack for the 
// started Activity. This ensures that navigating backward from the 
// Activity leads out of your application to the Home screen. 
TaskStackBuilder stackBuilder = TaskStackBuilder.create(context); 

// Adds the back stack for the Intent (but not the Intent itself) 
stackBuilder.addParentStack(<your_activity>.class); 
// Adds the Intent that starts the Activity to the top of the stack 
stackBuilder.addNextIntent(resultIntent); 
stackBuilder.startActivities(); 

Что это код по существу делает, является то, что деятельность от нажатия назад и следующая деятельность, одни и те же. Таким образом, когда нажата кнопка назад, вы будете существовать на главном экране.

+0

Это сотовая функция, но я только что заметил ее часть Библиотеки поддержки. Я проверяю. –

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