Android开发遇到'Runnable' is abstract; cannot be instantiated报错如何解决
报错原因
Runnable是Java抽象接口,无法直接实例化,你代码中new Runnable()的写法没有实现接口要求的run()方法,同时postDelayed方法还缺少第二个延迟时长参数,两个问题共同触发了编译报错。
修复后的完整代码
import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import java.util.Objects; public class SplashScreen extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Objects.requireNonNull(getSupportActionBar()).hide(); setContentView(R.layout.activity_splash_screen); // 延迟3秒后执行逻辑 new Handler().postDelayed(new Runnable() { @Override public void run() { // 此处写延迟结束后要执行的操作,示例为跳转主页面 Intent intent = new Intent(SplashScreen.this, MainActivity.class); startActivity(intent); // 关闭闪屏页 finish(); } }, 3000); } }
注意事项
- Runnable实现类的
run()方法内部是延迟结束后要执行的业务逻辑,可根据实际需求修改 postDelayed的第二个参数为延迟时长,单位为毫秒,可自定义调整- 针对Android 12及以上系统,官方已提供专门的SplashScreen API实现闪屏效果,可按需替换使用
内容的提问来源于stack exchange,提问作者Upvoter
相关产品推荐
相关产品推荐

