2013-08-12 3 views
0

У меня есть 2 вида деятельности: A, B:
The A запустит B.
Но я хочу, чтобы B нажмите кнопку «Назад» может вернуться в рабочий стол, но не назад к деятельности ,
Я использую ниже код, чтобы начать деятельность:Намерение и активность назад на Android

Intent NewActivity = new Intent(); 
NewActivity.setClass(A.this, B.class); 
NewActivity.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); 
startActivity(NewActivity); 

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

+0

Вы пробовали очистить свой проект и перестроить? Удалить приложение с устройства и переустановить? –

+0

после startActivity (NewActivity); напишите A.this.finish(); – Sushil

+0

или вы можете использовать 'NewActivity.setFlags (Intent.FLAG_ACTIVITY_CLEAR_TOP); 'при запуске операции B –

ответ

2

Добавить отделку(), когда вы начинаете свою деятельность.

Intent NewActivity = new Intent(); 
NewActivity.setClass(A.this, B.class); 
NewActivity.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); 
startActivity(NewActivity); 
finish(); 
0

Когда вы начали новый вид деятельности, вы также можете закончить() текущую деятельность, как это в деятельности A:

startActivity(new Intent(curentClass.this, newClass.class)); 
finish(); 
+0

Это также завершит действие, если Call Arrives. Не рекомендуется .. – user370305

+0

Не идеальный ответ – Tarun

+0

это неправильный ответ. – user1940676

1

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

Вот оно: -

Закрыв все предыдущие действия следующим образом:

Intent intent = new Intent(A.this, B.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.putExtra("Exit me", true); startActivity(intent); finish(); Тогда in B's onCreate() метод добавить это, чтобы закончить B

if(getIntent().getBooleanExtra("Exit me", false)){ finish(); }

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

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

Надеюсь, это поможет.

0

Это нехорошо. Типичный пользовательский интерфейс состоит в том, что они вернутся к предыдущему действию, нажав кнопку «Назад». Вот почему на каждом устройстве есть кнопка «Назад» и «Дом». В руководстве Android указано, что это правильное поведение.

Но если вы хотите сделать это в любом случае, вам придется переопределить следующий метод:

void onBackPressed() 

Это будет делать трюк. Просто запустите MAIN Intent здесь, и все готово.

+1

Желая не позволять пользователю просто вернуться, может быть правильное дизайнерское решение мысли тщательно. Тем не менее, перезапись кнопки на задней панели обычно является плохой практикой. Поток программы должен обрабатываться стеком и манипулировать им. – Eric

+0

Я согласен с @EricTobias - переопределение 'onBackPressed()' - это то, что должно быть сделано только в определенных обстоятельствах и только если вы знаете, что делаете. – Squonk

1

Попробуйте этот флаг для этого:

intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
0

Чтобы вернуться на домашний экран, т.е. рабочий стол

Intent intent = new Intent(Intent.ACTION_MAIN); 
intent.addCategory(Intent.CATEGORY_HOME); 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(intent); 

отделка() будет просто взять и на свой первый экран, т.е. A!

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