【问题标题】:Android: Redirect to another Activity after delayAndroid:延迟后重定向到另一个活动
【发布时间】:2016-03-11 08:45:55
【问题描述】:

所以我正在为一个大学项目开发​​一个简单的应用程序,并且我已经能够使用片段集成 Facebook 登录。

但我现在被困在用户登录后尝试重定向用户。我只是想将它们重定向到第二个活动页面

这是我的 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

        }

} 

【问题讨论】:

  • 那么您是否在添加延迟或重定向时遇到问题,或两者兼而有之?
  • 在这里提出了类似的问题:start second activity
  • @DavidMedenjak 您发布的关于附加到按钮单击的问题是如何重复的?我的询问一段时间后重定向

标签: java android facebook redirect


【解决方案1】:

要进行延迟转换,请使用Handler 类的postDelayed(Runnable r, long delayMillis) 方法,例如:

Java

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

KotlinAnko

val someThread = Runnable {
    startActivity(intentFor<TargetActivity>())
}

Handler().postDelayed(someThread, 1500)

【讨论】:

  • 是的,看到问题与我的意图不起作用之前的问题相同“Intent i3 = new Intent(FLogin.this, SecondActivity.class); startActivity(i3);” Flogin 不是一个封闭的类/,如果我将其更改为片段名称,它只会打破整行说无法解析
  • Flogin 是 Activity 吗?
  • 意图需要当前上下文作为参数,如果你在片段中使用getActivity()
  • 如果你在一个片段中,你应该使用getActivity()作为当前上下文。
  • 快乐是我的 :)
【解决方案2】:

简单地通过intent调用一个新的activity:

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

【讨论】:

  • 是的,看到问题与我的意图不起作用之前的问题相同“Intent i3 = new Intent(FLogin.this, SecondActivity.class); startActivity(i3);” Flogin 不是封闭类/,如果我将其更改为片段名称,它只会打破整行说无法解析
  • 如果通过片段调用,那么您应该使用 this.getActivity() 代替。所以,意图 i = new Intent(this.getActivity(), HomeActivity.class);开始活动(一);完成();
【解决方案3】:

检查这个:-

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

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

【讨论】:

    【解决方案4】:

    处理程序允许您发送和处理 Message 和 Runnable 对象 与线程的 MessageQueue 相关联。每个 Handler 实例都是 与单个线程和该线程的消息队列相关联。什么时候 你新建一个Handler,它绑定到线程/消息队列 正在创建它的线程——从那时起,它将传递 消息和可运行的消息到该消息队列并执行它们 从消息队列中出来。

    您可以轻松使用 Handler postDelayed 方法。

    Handler hd = new Handler();
                hd.postDelayed(new Runnable() {
                    @Override
                    public void run() {
    
                   // Add Your Intent
    
                 }
    
                }, 2000); // Time Delay ,2 Seconds 
         }
    

    【讨论】:

      【解决方案5】:

      在 Kotlin 中;

        val r = Runnable {
      
              startActivity(Intent(this, AuthorActivity::class.java))
          }
          val h = Handler()
      
          h.postDelayed(r, 10) 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-07-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多