Заставка с активностью на весь экран работает не так, как ожидалось

#android #fullscreen #splash-screen

Вопрос:

Я использую полноэкранное действие в своем приложении в Android studio, и все работает нормально, но когда экран-заставка заканчивается (через 3000 мс), начинается основное действие или главная страница, но если я использую кнопку «Назад» с телефона Android, дисплей возвращается на экран-заставку и остается на этом экране-заставке (вы не можете снова вернуться к основному действию)…

Какой код я могу использовать, чтобы избежать этого? (показывайте заставку только один раз при запуске приложения и никогда не возвращайтесь к ней, даже если я нажму кнопку «Назад»).

Заранее спасибо..

Комментарии:

1. простого finish() после начала новой деятельности будет достаточно

2. Можете ли вы уточнить, где именно? в каком методе? Я попытался добавить это к нескольким различным методам, и это не сработало? Спасибо

3. Неважно, я уже понял, что ты сказал. Это работает, добавляя его после начала (намерения).. Но теперь, если я использую этот код, создается другое условие, которого я не хочу. Это условие состоит в том, что если вы сейчас нажмете кнопку «Назад», она будет действовать как кнопка «Домой» на устройстве andorid, но я хочу оставаться в приложении, несмотря ни на что. Я уже нашел, как это исправить, но спасибо за ваш ответ.

Ответ №1:

Вам нужно очистить задний стек, когда вы переходите от действия на экране заставки, установив FLAG_ACTIVITY_CLEAR_TOP amp; FLAG_ACTIVITY_NEW_TASK в значение намерение.

Итак, в активности заставки:

 Intent intent = new Intent(this, HomeActivity.class); // or MainActivity
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(intent);
finish();
 

Комментарии:

1. Можете ли вы уточнить, где именно? в каком методе? Я попытался добавить это к нескольким различным методам, и это не сработало? Спасибо

2. Вы можете найти любое намерение в действии на экране заставки и заменить его этим намерением.. Но убедитесь, что для изменения имени целевого действия

Ответ №2:

Я нашел ответ на этот вопрос. Если вы хотите, чтобы основное действие не возвращалось к экрану-заставке, вы можете использовать следующий метод в основном действии:

 @Override
public void onBackPressed() {
    moveTaskToBack(false);
}
 

Этот метод также не позволит пользователю выйти из приложения, если он нажмет кнопку «Назад» (поэтому он остается в приложении до тех пор, пока не нажмет кнопку «Домой» или другую кнопку).

Комментарии:

1. Просто переопределение onBackPressed и сохранение его пустым также приведет к тому же результату 😉