【问题标题】:How can I redirect from an activity to another activity after some delays?在一些延迟之后,如何从一个活动重定向到另一个活动?
【发布时间】:2019-08-19 12:36:47
【问题描述】:

我是 Kotlin 语言的初学者。例如 4 秒后,我无法重定向到另一个活动。我知道如何在 Java 中做到这一点,但我不知道 Kotlin。我使用的是 android studio 2019 版。

我尝试了 android studio 的转换器(Java 到 Kotlin) 我找不到一个答案,它引导我找到一个可以通过延迟将我从一个活动重定向到另一个活动的答案。我不是在询问其他重定向方式,而是在询问延迟。我的意思是如何在不点击任何按钮或其他东西的情况下转到 android 程序中的另一个页面。

编辑(9 月 13 日): 不幸的是,我仍在努力解决这个问题。我尝试使用此代码,但它不起作用。你能告诉我是什么问题吗: MainActivity.kt:

package com.rearaa.weading
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.os.Handler

class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
}
val handler = Handler()
val runnable = Runnable {
    val i = Intent(this@MainActivity, MenuPage::class.java)
    startActivity(i)
}
handler.postDelayed(runnable, 4000)

}

在上面的代码中,我想从 MainActivity 重定向到 MenuPage。

【问题讨论】:

  • 如果您使用了 Android Studio 自动转换器。那么什么没用呢?
  • 请发布您的代码
  • 基本上有 2 个不同的任务:1) 延迟运行代码; 2)重定向到另一个活动。那么哪一个是问题呢?
  • @EpicPandaForce 我不知道!也许转换不完全正确,因为我得到了一些错误。

标签: android android-studio kotlin android-activity


【解决方案1】:

这是你如何使用 Kotlin 在 android 中做到这一点

private lateinit var mHandler: Handler
private lateinit var mRunnable: Runnable

功能:

private fun startMainActivity() {


    mRunnable = Runnable {
        startActivity(Intent(this, MainActivity::class.java))
        finish()
    }

    mHandler = Handler()

    mHandler.postDelayed(mRunnable, 4000)
}

删除回调:

override fun onStop() {
    super.onStop()
    mHandler.removeCallbacks(mRunnable)
}

【讨论】:

  • MainActivity 是第二页吗?
  • 是的,这是第二个活动。
  • 对不起,我应该在哪里使用该功能?
  • 你应该在activity中编写这个函数。
【解决方案2】:

使用Handler().postDelayed()
例如:

Handler().postDelayed({
      startActivity(Intent(this, SecondActivity::class.java))
    }, 4000); //4 Seconds

【讨论】:

  • 我得到这个错误:函数声明必须有一个名字
【解决方案3】:

试试这个。

   val r = Runnable {
         //start your activity here
    }
    Handler().postDelayed(r, 3000)

3000 是延迟时间,您可以将其更改为您想要的任何值。

【讨论】:

    【解决方案4】:

    其中一种方式有很多种

     private lateinit var handler: Handler
    

    这里是函数

     override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
    
            handler = Handler()
    
            handler.postDelayed(object : Runnable {
                override fun run() {
    
    
                    startActivity(
                        Intent(
                            this@SplashActivity,
                              LoginActivity::class.java
                        )
                    )
    
                    finish()
    
    
                }
            }, timeDelay)
    
    
        }
    
        override fun onDestroy() {
            super.onDestroy()
            handler.removeCallbacksAndMessages(null)
        }
    

    【讨论】:

      【解决方案5】:

      您可以使用Schedule

      inline fun Timer.schedule(
          delay: Long, 
          crossinline action: TimerTask.() -> Unit
      ): TimerTask (source)
      

      在这里找到它:http://jamie.mccrindle.org/2013/02/exploring-kotlin-standard-library-part-3.html) 导入 java.util.Timer 导入 kotlin.concurrent.schedule

      Timer("SettingUp", false).schedule(500) { 
         doSomething()
      }
      

      【讨论】:

        【解决方案6】:

        最短样本:

                Handler().postDelayed({ startActivity(yourIntent()) }, 4000L)
        

        【讨论】:

          【解决方案7】:

          4 秒后从 MainActivity 重定向到另一个活动(FirstActivity):

          val handler = Handler()
                  val runnable = Runnable {
                      val i = Intent(this@MainActivity, FirstActivity::class.java)
                      startActivity(i)
                  }
                  handler.postDelayed(runnable, 4000)
          

          【讨论】:

          • 我收到错误“期望成员声明”。那我该怎么办?
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-08-18
          • 2023-03-20
          • 1970-01-01
          • 1970-01-01
          • 2013-04-07
          相关资源
          最近更新 更多