2017-02-11 3 views
0

Я знаю, что на этот вопрос был дан ответ в других сообщениях. Но это не решает мою проблему.Очистить активность Android-активности и начать работу

У меня есть 3 screens: A,B and Home. Приложение начинается с A, затем переходит на B, а затем на домашнюю страницу. Но я хочу удалить действия A и B, когда он достигнет Домашней активности, так что когда back is pressed app exits.

Я пробовал:

  1. Intent.FLAG_ACTIVITY_CLEAR_TOP. Он отлично работает, когда нажата задняя часть. Приложение завершает работу. Но если я снова открою приложение из фона, он начнется с экрана B.

  2. Intent.FLAG_ACTIVITY_NEW_TASK. Это работает именно так, как я хочу. Но когда начинается активность Home, на экране появляется внезапный сбой, и он не является гладким.

+0

Вы можете закончить эту деятельность a и b при загрузке на рабочем месте или можете обрабатывать обратное нажатие – curiousMind

ответ

0

Попробуйте следующий код:

Intent i = new Intent(YourActivity.this, HomeActivity.class); 
      i2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); 
finish(); 
startActivity(i); 
+0

Intent.FLAG_ACTIVITY_NEW_TASK приводит к сбою, а переход не является плавным. – jayasoo

0

Вы можете сделать так же, для SplashScreen (A) вы можете установить nohistory = истина в AndroidMenifest.xml и Гото активность (B), и когда вы переходите в Activity Home из Activity (B), завершите работу (B), чем перейти к домашней деятельности. , поэтому оба ваших предыдущих действия не будут храниться в стеке.

И в операции B переопределить метод onBackPresh(), но удалите super.backpresh() в стороне. и начните свою деятельность A, закончив эту текущую деятельность, она будет работать.

+0

В вашем решении, если я нажму кнопку «Назад» от B, он не пойдет назад к A. – jayasoo

+0

в общем случае мы не показываем слэш-экран снова, если один раз мы его отобразим, его за один раз. –

+0

Они оба являются экранами входа в систему. Поэтому возвращение мне необходимо в моем контексте. – jayasoo

1
Intent intent = new Intent(getApplicationContext(), Home.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(intent); 

Это очистит все виды деятельности на вершине дома.

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