2016-03-11 3 views
5

Итак, я разрабатываю простое приложение для проекта колледжа. И я смог интегрировать вход в Facebook с помощью фрагментов.Android: перенаправление на другую активность после задержек

Но я сейчас застреваю, пытаясь перенаправить пользователя после входа в систему. Я просто хочу, чтобы перенаправить их на второй активности страницы

Вот мой код для успеха авторизации Facebook

private FacebookCallback<LoginResult> mCallback=new FacebookCallback<LoginResult>() { 
    @Override 
    public void onSuccess(LoginResult loginResult) { 
     AccessToken accessToken = loginResult.getAccessToken(); 
     Profile profile = Profile.getCurrentProfile(); 
     if (profile != null) { 
      display.setText("Welcome: " + profile.getFirstName()); 
      //Redirect to Second Activity 

     } 

} 
+0

У вас возникли проблемы с добавлением задержки или выполнением переадресации или обоих? – 1615903

+0

Аналогичный вопрос задан здесь: [начать второе мероприятие] (http://stackoverflow.com/questions/13194081/how-to-open-a-second-activity-on-click-of-button-in-android-app) – jam

+0

Возможный дубликат [Как начать новую активность при нажатии кнопки] (http://stackoverflow.com/questions/4186021/how-to-start-new-activity-on-button-click) –

ответ

4

Чтобы сделать замедленное postDelayed(Runnable r, long delayMillis) определяет метод перехода использования Handler класса, например:

Runnable r = new Runnable() { 

      @Override 
      public void run() { 
       // if you are redirecting from a fragment then use getActivity() as the context. 
       startActivity(new Intent(CurrentActivity.this, TargetActivity.class)); 

      } 
     }; 


     Handler h = new Handler(); 
     // The Runnable will be executed after the given delay time 
     h.postDelayed(r, 1500); // will be delayed for 1.5 seconds 
+0

Да, проблема та же, что и у меня до того, как мое намерение не работает »Intent i3 = new Intent (FLogin.this, SecondActivity.class); startActivity (i3);" Flogin не является закрытым классом /, и если я изменю его на имя fragement, он просто сломает всю строку, говоря, что не может решить. – ClarkPamler93

+0

Является ли Flogin активным? –

+1

Цель требует текущего контекста в качестве аргумента, если вы используете фрагмент use getActivity() ' – 1615903

2

Просто назвать новую деятельность через намерение:

Intent i = new Intent(LoginActivity.this, HomeActivity.class); 
startActivity(i); 
finish(); 
+0

Да, проблема та же, что и у меня до того, как мое намерение не работает «Intent i3 = new Intent (FLogin.this, SecondActivity.class); startActivity (i3); Flogin не является закрытым классом /, и если я изменю его на имя fragement, он просто сломает всю строку, говоря, что не может решить – ClarkPamler93

+0

Если вы вызываете фрагмент, вы должны использовать this.getActivity(). Итак, Intent i = new Intent (this.getActivity(), HomeActivity.class); startActivity (i); finish(); –

2

Проверьте это: -

new Handler().postDelayed(new Runnable() { 
        @Override 
        public void run() { 

         Intent i=new Intent(CurrentActivity.this,Next.class); 
         startActivity(i); 
        } 
       }, 3000); 
1

обработчиком позволяет передавать и обрабатывать сообщений и Runnable объекты , связанные с MessageQueue потока. Каждый экземпляр Handler имеет значение , связанное с одним потоком и очереди сообщений этого потока. Когда вы создаете нового обработчика, он привязан к очереди потоков/сообщений потока, который его создает - с этого момента он доставляет сообщениям и запускам в эту очередь сообщений и выполняет их по мере их появления из очереди сообщений.

Вы можете использовать HandlerpostDelayed метод легко.

Handler hd = new Handler(); 
      hd.postDelayed(new Runnable() { 
       @Override 
       public void run() { 

       // Add Your Intent 

      } 

      }, 2000); // Time Delay ,2 Seconds 
    } 
Смежные вопросы