Страницы

Поиск по вопросам

воскресенье, 2 февраля 2020 г.

Переход на другое Activity через 5 секунд

#java #android


Здравствуйте. Хочу в приложении сделать что-то вроде заставки.
Пользователь заходит в приложение, ему открывается первая Activity, и через 5 секунд
бросает на другое.

Делаю так:

int ii = 0;

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);


setContentView(R.layout.fon);

    try {

        TimeUnit.SECONDS.sleep(5);
        ii = 5;

    } catch (InterruptedException e) {
        // TODO Auto-generated catch block

        e.printStackTrace();

    }

    System.out.println(ii);

    if (ii == 5) {
    Intent intent2 = new Intent(this, Web.class); 
    startActivity(intent2);
    }

}


И получается в результате следующее: Пользователь заходит в приложение, ему видно
первое Activity и через 5 секунд открывается другое активити. 
Но проблема в том что на первом активити ему не видно экрана, то есть не работает
setContentView(R.layout.fon);

Что я делаю не так?
Буду благодарен за помощь!
    


Ответы

Ответ 1



Вы приостановили главный поток строкой TimeUnit.SECONDS.sleep(5); Так у вас вообще должно было вылететь по ANR Останавливать главный поток не надо. Это плохая практика. Вам надо сделать иначе - запустить отложенную задачу один из множества способов, например, так: Thread thread = new Thread() { @Override public void run() { try { TimeUnit.SECONDS.sleep(5); Intent intent2 = new Intent(ТУТ_ИМЯ_КЛАССА_АКТИВИТИ.this, Web.class); startActivity(intent2); } catch (InterruptedException e) { e.printStackTrace(); } } }; thread.start();

Ответ 2



Запускаете в onCreate() Handler handler = new Handler(); handler.postDelayed(new Runnable() { @Override public void run() { Intent intent = new Intent(FirstActivity.this, SecondActivity.class); startActivity(intent); finish(); } }, 2000);//Ставите сколько сек, 1000 = 1с.

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

Отправить комментарий