2013-01-23 5 views
0

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

 Handler handler = new Handler(); 
    handler.postDelayed(new Runnable() { 
     public void run() { 
      startActivity(nextIntent); 
     } 
    }, 2000); 

где я ранее установки намерения nextIntent с соответствующим классом и соответствующие дополнительные услуги. Идея состоит в том, что я буду откладывать намерение от запуска в течение 2 секунд. Вышеприведенный код работает отлично, если я вызываю его непосредственно из своей Activity. То, что я хотел бы сделать, это абстрактный код выше, так что я мог бы назвать его от любой деятельности, как это:

DelayActivity.StartDelayedActivity(2,nextIntent); 

Это будет начать следующую активность nextIntent после секундной задержки 2. Однако, когда я пытаюсь кодировать это я получаю следующее сообщение об ошибке:

The method startActivity(Intent) is undefined for the type new Runnable(){} 

Я смотрел на такие темы, как это: Is that possible to call for startActivity() from a static method?, но этот поток определяет намерение в методе. Я хотел бы быть в состоянии принять намерение, что я уже настроить и передать это. Является ли то, что я ищу, возможно сделать? Если да, то какие изменения мне нужно сделать? Огромное спасибо.

ответ

0

Я немного сомневаюсь в том, чего вы пытаетесь достичь. У вас действительно достаточно активности, чтобы это было полезно? Похоже, вы пытаетесь создать услугу «пейджер». Так почему бы просто не сделать это?

Кроме того, вы, вероятно, не хотите создавать свой собственный Handler, вы, вероятно, просто хотите опубликовать его в потоке графического интерфейса Activity (действительно!). Поэтому я бы пересмотрел ваш дизайн.

Но если вы просто хотите, чтобы игнорировать все, что ответ на ваш вопрос немедленного, что вы должны пропускать Context (например, как this от вашего Activity экземпляра), на котором вы должны позвонить startActivity.

+0

Большое спасибо за ответ. Я новичок в разработке Android и, безусловно, открыта для повторного дизайна, если он более оптимален. То, что я пытаюсь сделать, - это отложить начало активности на определенное количество времени. Итак, поток работает так. У меня есть действие на экране, пользователь предпринимает некоторые действия и нажимает кнопку, которая отправляет их на новый экран. Этот новый экран только на несколько секунд, после чего приложение автоматически запускает другое действие. Цель состоит в том, чтобы показать пользователю временный экран, но не требовать от них каких-либо действий, чтобы отойти от временного экрана. – NifflerX

+0

Я бы указал, что в качестве всплывающего окна отображается диалоговое окно или «ViewPager», чтобы показать набор вещей последовательно http://developer.android.com/training/animation/screen-slide.html. Наличие кучи действий является признаком запаха кода. –

+0

Привет, Спасибо за идею ViewPager. Мои проблемы связаны с тем, что он дает пользователю слишком большую свободу перемещения между экранами и кажется, что он создан для обработки одних и тех же объектов на каждом экране (в примере на каждом экране есть текстовое поле). В моем приложении на экране есть текстовые поля, а у другого есть кнопки, а у третьего есть изображения. Используя ViewPager, я могу ограничить возможности навигации, доступные пользователю, и иметь разные объекты на экране? Еще раз спасибо за вашу помощь. – NifflerX

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