You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin编写安卓SplashScreen启动屏Activity代码标红如何解决?

问题修复方案

问题根因

你代码里的核心错误是作用域引用错误:你当前在SplashScreen类中编写逻辑,this@MainActivity是不存在的外层类引用,IDE无法识别该作用域,连带后续的MainActivity::class.java也会触发异常标红。

修复步骤

  • 第一步:修正Intent的上下文参数
    将报错行的this@MainActivity替换为this@SplashScreen,获取当前启动屏Activity的合法Context:
val i = Intent(this@SplashScreen, MainActivity::class.java)
  • 第二步(可选,处理残留标红):如果修改上下文后java仍标红,检查项目Gradle配置
    1. 打开模块级build.gradle文件,确认plugins块已添加kotlin-android插件:
      plugins {
          id 'com.android.application'
          id 'kotlin-android'
      }
      
    2. 确认dependencies块已引入kotlin标准库:
      dependencies {
          implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
          // 其他依赖...
      }
      
    3. 点击Android Studio右上角的「Sync Project with Gradle Files」同步配置,再执行「Build → Clean Project → Rebuild Project」清理重建项目即可。

优化建议

你使用的无参Handler()构造方法在Android 11及以上版本已被废弃,建议指定主线程Looper避免隐患,修改后的完整代码如下:

package com.example.textnav

import android.content.Intent
import android.os.Bundle
import android.os.Handler
import android.os.Looper
import androidx.appcompat.app.AppCompatActivity

class SplashScreen : AppCompatActivity() {
    private val SPLASH_TIME_OUT = 3000L

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_splash_screen)

        Handler(Looper.getMainLooper()).postDelayed(
            {
                val i = Intent(this@SplashScreen, MainActivity::class.java)
                startActivity(i)
                finish()
            }, SPLASH_TIME_OUT
        )
    }
}

内容的提问来源于stack exchange,提问作者Naceri Anes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 13:39:03